run method
Implementation
Future<int> run() async {
final input = _arg('--input', '-i') ?? '';
final output = _arg('--output', '-o') ?? '';
final verbose = _hasFlag('--verbose', '-v');
final noFmt = _hasFlag('--no-format');
final defaults = NebulaProjectConfig(
input: input.isNotEmpty ? input : 'swagger.json',
output: output.isNotEmpty ? output : 'lib/api',
);
final cfg = await ConfigLoader.loadOrDefault(defaults);
final effectiveInput = input.isNotEmpty ? input : cfg.input;
final effectiveOutput = output.isNotEmpty ? output : cfg.output;
if (!await File(effectiveInput).exists()) {
stderr.writeln('❌ Spec file not found: $effectiveInput');
return 1;
}
final options = CompilerOptions(
outputDir: effectiveOutput,
format: !noFmt && cfg.format,
verbose: verbose || cfg.verbose,
);
final compiler = NebulaCompiler();
final watcher = SpecWatcher(
specPath: effectiveInput,
debounce: const Duration(milliseconds: 200),
onRebuild: () async {
try {
final result = await compiler.compileFile(effectiveInput, options);
print('✅ ${result.emitResult.filesWritten.join(', ')} written '
'(${result.elapsed.inMilliseconds}ms)');
} on CompilerException catch (e) {
stderr.writeln('❌ $e');
}
},
);
await watcher.start();
return 0;
}