main function
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);
}
}