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.');
}
}