run method
Implementation
Future<int> run() async {
final force = _hasFlag('--force', '-f');
// ── nebula.config.json ────────────────────────────────────────────────
if (await ConfigLoader.exists() && !force) {
print('⚠️ nebula.config.json already exists. Use --force to overwrite.');
} else {
const config = NebulaProjectConfig(
input: 'swagger.json',
output: 'lib/api',
format: true,
deduplicate: true,
inferNullability: true,
verbose: false,
features: {
'cache': true,
'retry': true,
'logging': true,
'offline': false,
},
);
await ConfigLoader.save(config);
print('✅ Created nebula.config.json');
}
// ── Sample swagger stub ───────────────────────────────────────────────
final swaggerFile = File('swagger.json');
if (!await swaggerFile.exists() || force) {
const encoder = JsonEncoder.withIndent(' ');
await swaggerFile.writeAsString(encoder.convert(_sampleSpec));
print('✅ Created swagger.json (sample OpenAPI 3.0 spec)');
}
// ── .gitignore hint ────────────────────────────────────────────────────
final gitignore = File('.gitignore');
if (await gitignore.exists()) {
final content = await gitignore.readAsString();
if (!content.contains('lib/api/')) {
await gitignore.writeAsString('$content\n# Nebula generated\nlib/api/\n');
print('✅ Added lib/api/ to .gitignore');
}
}
// ── Next steps ─────────────────────────────────────────────────────────
print('''
🌌 Nebula API Studio initialised!
Next steps:
1. Edit swagger.json (or replace with your real spec)
2. Run: nebula generate
3. Or start watch mode: nebula watch
4. Import the generated code:
import 'lib/api/nebula_generated.dart';
''');
return 0;
}