generateStructure function

void generateStructure(
  1. Directory srcDir,
  2. Template template,
  3. Map<String, String> snippets
)

Generate folders and files for a project based on a Template and snippets

Implementation

void generateStructure(
  Directory srcDir,
  Template template,
  Map<String, String> snippets,
) {
  // -----------------------------
  // CREATE FOLDERS
  // -----------------------------
  for (final folder in template.folders) {
    Directory(p.join(srcDir.path, folder)).createSync(recursive: true);
  }

  // -----------------------------
  // CREATE FILES
  // -----------------------------
  for (final file in template.files) {
    final content = snippets[file.snippet];
    if (content == null) {
      throw Exception('Snippet not found: ${file.snippet}');
    }

    // Full path to file inside project
    final f = File(p.join(srcDir.path, file.path));

    // Always create parent folders
    f.parent.createSync(recursive: true);

    // Write content (overwrite if exists)
    f.writeAsStringSync(content);
  }
}