run method

  1. @override
Future<int> run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
Future<int> run() async {
  logger.info('Generating assets...');

  final assetsDir = Directory('assets');
  if (!assetsDir.existsSync()) {
    logger.warn('assets directory not found.');
    return ExitCode.usage.code;
  }

  final buffer = StringBuffer();
  buffer.writeln('class Assets {');
  buffer.writeln('  Assets._();');
  buffer.writeln();

  await _scanDirectory(assetsDir, buffer);

  buffer.writeln('}');

  final outputFile = 'lib/common/utils/assets.dart';

  // Ensure utils directory exists
  FileUtils.createDirectory('lib/common/utils', logger: logger);

  FileUtils.createFile(
    outputFile,
    buffer.toString(),
    logger: logger,
    overwrite: true,
  );

  logger.success('Assets generated successfully at $outputFile');
  return ExitCode.success.code;
}