generateAll static method
Generate all token classes
Implementation
static Future<void> generateAll([String? customUrl]) async {
final outputDir = 'lib/tokens/';
// Download the latest theme.css from GitHub
String cssContent;
try {
cssContent = await downloadThemeCss(customUrl);
} catch (e) {
print('Error: $e');
exit(1);
}
final generator = TokenGenerator(cssContent);
// Create output directory if it doesn't exist
final outputDirFile = Directory(outputDir);
if (!outputDirFile.existsSync()) {
outputDirFile.createSync(recursive: true);
}
print('Generating FlyWind design tokens...\n');
// Generate each token type
for (final entry in _tokenConfigs.entries) {
final tokenType = entry.key;
final config = entry.value;
print('Extracting ${config['prefix']} tokens...');
final tokens = generator.extractTokens(
config['prefix']!,
config['conversionType']!,
);
if (tokens.isEmpty) {
print('No ${config['prefix']} tokens found');
continue;
}
print('Found ${tokens.length} ${config['prefix']} tokens');
final generatedCode = _generateClass(
className: config['className']!,
dartType: config['dartType']!,
description: config['description']!,
values: tokens,
);
final fileName = tokenType.replaceAll('-', '_');
final outputFile = File('${outputDir}${fileName}.dart');
outputFile.writeAsStringSync(generatedCode);
print('Generated: ${outputFile.path}');
// Print some examples
print('Sample ${config['prefix']} tokens:');
final sampleTokens = tokens.entries.take(3).toList();
for (final entry in sampleTokens) {
print(' ${entry.key}: ${entry.value}');
}
print('');
}
// Generate tokens.dart export file
_generateTokensExport(outputDir);
print('Token generation completed!');
}