finalizeAndWriteFiles method

void finalizeAndWriteFiles(
  1. AFCommandContext context
)

Used at the very end of a command to cleanup and write out all the files which were generated or modified.

Implementation

void finalizeAndWriteFiles(AFCommandContext context) {
  if(!context.isRootCommand) {
    return;
  }

  // verify that none of the files still contain [!af_] tags
  _validateNoAFTags(context, created.values);
  _validateNoAFTags(context, modified.values);

  final output = context.output;
  var renamedCount = 0;
  for(final original in renamed.keys) {
    final revised = renamed[original];
    if(revised == null) {
      continue;
    }

    if(context.isExportTemplates) {
      continue;
    }

    output.writeTwoColumns(col1: "rename ", col2: "${AFProjectPaths.relativePathFor(original)} -> ${AFProjectPaths.relativePathFor(revised)}");
    renamedCount++;

    final pathOrig = AFProjectPaths.fullPathFor(original);
    final fileOrig = File(pathOrig);
    final pathRevised = AFProjectPaths.fullPathFor(revised);
    fileOrig.renameSync(pathRevised);
  }


  var createdCount = 0;
  for(final generatedFile in created.values) {
    if(generatedFile.writeIfModified(context)) {
      createdCount++;
    }
  }

  var modifiedCount = 0;
  for(final modifiedFile in modified.values) {
    if(modifiedFile.writeIfModified(context)) {
      modifiedCount++;
    }
  }

  var createdFolderCount = 0;
  for(final folder in ensuredFolders) {
    if(!AFProjectPaths.projectFileExists(folder)) {
      createdFolderCount++;
      output.writeTwoColumns(col1: "create ", col2: AFProjectPaths.relativePathFor(folder));
      AFProjectPaths.createProjectFolder(folder);
    }
  }

  output.writeTwoColumns(col1: "success ", col2: "renamed $renamedCount files, created $createdCount files, modified $modifiedCount files, created $createdFolderCount folders");
}