main function

void main(
  1. List<String> args
)

Command line interface for the watcher

Implementation

void main(List<String> args) async {
  // Parse command line arguments
  String? assetsDirectory;
  String? outputFile;
  String? className;
  bool isWatchMode = false;

  for (int i = 0; i < args.length; i++) {
    switch (args[i]) {
      case '--watch':
      case '-w':
        isWatchMode = true;
        break;
      case '--assets-dir':
      case '-a':
        if (i + 1 < args.length) {
          assetsDirectory = args[i + 1];
          i++; // Skip next argument
        }
        break;
      case '--output':
      case '-o':
        if (i + 1 < args.length) {
          outputFile = args[i + 1];
          i++; // Skip next argument
        }
        break;
      case '--class-name':
      case '-c':
        if (i + 1 < args.length) {
          className = args[i + 1];
          i++; // Skip next argument
        }
        break;
      case '--help':
      case '-h':
        _printHelp();
        return;
    }
  }

  if (isWatchMode) {
    // Watch mode
    final watcher = AssetWatcher(
      assetsDirectory: assetsDirectory ?? 'assets',
      outputFile: outputFile ?? 'lib/generated/assets.dart',
      className: className ?? 'Assets',
    );
    await watcher.watch();
  } else {
    // Generate once mode
    final generator = AssetGenerator(
      assetsDirectory: assetsDirectory ?? 'assets',
      outputFile: outputFile ?? 'lib/generated/assets.dart',
      className: className ?? 'Assets',
    );

    final success = generator.generate();
    exit(success ? 0 : 1);
  }
}