generate static method

Future<void> generate(
  1. Map<String, dynamic> template,
  2. Map<String, String> vars
)

Implementation

static Future<void> generate(
    Map<String, dynamic> template, Map<String, String> vars) async {
  final folders = template['folders'] ?? [];
  final files = template['files'] ?? [];

  // 1️⃣ Create folders with spinner
  await _withSpinner('🔹 Creating folders', () async {
    for (final folder in folders) {
      final path = VariableResolver.resolve(folder, vars);
      Directory("lib/src/$path").createSync(recursive: true);
      await Future.delayed(Duration(milliseconds: 50)); // smooth effect
    }
  });

  // 2️⃣ Create files with spinner
  await _withSpinner('🔹 Creating files', () async {
    for (final file in files) {
      final path = VariableResolver.resolve(file['path'], vars);
      final content = VariableResolver.resolve(file['content'], vars);

      final fullPath = "lib/src/$path";

      File(fullPath).createSync(recursive: true);
      File(fullPath).writeAsStringSync(content);
      await Future.delayed(Duration(milliseconds: 30)); // smooth effect
    }
  });

  // 3️⃣ Final success message
  stdout.writeln('🎉 All files generated successfully!');
}