run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<void> run() async {
logger.info(lightCyan.wrap('''
███████╗██████╗ ███████╗ ██████╗████████╗██████╗ █████╗
██╔════╝██╔══██╗██╔════╝██╔════╝╚══██╔══╝██╔══██╗██╔══██╗
███████╗██████╔╝█████╗ ██║ ██║ ██████╔╝███████║
╚════██║██╔═══╝ ██╔══╝ ██║ ██║ ██╔══██╗██╔══██║
███████║██║ ███████╗╚██████╗ ██║ ██║ ██║██║ ██║
╚══════╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝
''')!);
logger.info('Welcome to Spectra! Let\'s set up your project.');
final projectName = Select(
prompt: 'What is your project name?',
options: ['Spectra App', 'My Awesome CLI', 'Custom'],
).interact();
final actualName = projectName == 2
? Input(prompt: 'Enter custom project name:').interact()
: ['Spectra App', 'My Awesome CLI'][projectName];
final description =
Input(prompt: 'Briefly describe your project:').interact();
final stack = Select(
prompt: 'What is your tech stack?',
options: ['Dart/CLI', 'Flutter/Mobile', 'React/Web', 'Other'],
).interact();
final actualStack =
['Dart/CLI', 'Flutter/Mobile', 'React/Web', 'Other'][stack];
logger.info('\nSummary:');
logger.info('Project: $actualName');
logger.info('Description: $description');
logger.info('Stack: $actualStack');
final confirm =
Confirm(prompt: 'Initialize .spectra directory?').interact();
if (confirm) {
_initializeSpectra(actualName, description, actualStack);
logger.success('Spectra initialized successfully!');
} else {
logger.info('Initialization cancelled.');
}
}