runMigrateAgentEntries function

Future<int> runMigrateAgentEntries({
  1. required String path,
  2. required bool checkOnly,
  3. required bool write,
  4. String defaultNamespace = 'app',
})

Implementation

Future<int> runMigrateAgentEntries({
  required final String path,
  required final bool checkOnly,
  required final bool write,
  final String defaultNamespace = 'app',
}) async {
  if (checkOnly && write) {
    stderr.writeln('Use either --check or --write, not both.');
    return 64;
  }

  late final MigrateAgentEntriesReport report;
  try {
    report = await migrateAgentEntriesAtPath(
      path: path,
      write: write,
      checkOnly: checkOnly,
      defaultNamespace: defaultNamespace,
    );
  } on MigrateAgentEntriesPathNotFound catch (error) {
    stderr.writeln(error);
    return 66;
  }

  for (final result in report.results.where((final r) => r.changed)) {
    stdout.writeln('would migrate: ${result.path}');
    if (write && !checkOnly) {
      stdout.writeln('  wrote: ${result.path}');
    }
  }

  if (report.filesChanged == 0) {
    stdout.writeln(
      'OK: no MCPCallEntry migrations needed (${report.filesScanned} dart files scanned)',
    );
  } else {
    stdout.writeln(
      '${report.filesChanged} file(s) ${checkOnly || !write ? 'would change' : 'migrated'} '
      '(${report.filesScanned} dart files scanned)',
    );
  }

  if (checkOnly && report.wouldChange) {
    return 1;
  }
  return 0;
}