generateAll static method

Future<void> generateAll([
  1. String? customUrl
])

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!');
}