run method
Runs this command.
The return value is wrapped in a Future if necessary and returned by
CommandRunner.runCommand.
Implementation
@override
Future<int> run() async {
final rest = argResults!.rest;
if (rest.isEmpty) {
Logger.error('Screen name is required.');
Logger.plain('');
Logger.plain('Usage: $invocation');
Logger.plain('Example: srik add screen settings --feature home');
return 64;
}
final screenName = rest.first;
final feature = argResults!['feature'] as String;
final screenError = Validators.featureName(screenName);
if (screenError != null) {
Logger.error(screenError);
return 64;
}
final ctx = ProjectContext.load(Directory.current.path);
if (ctx == null) {
Logger.error(
'No srik.yaml found. Run this command inside a project '
'created with `srik create`.',
);
return 1;
}
try {
FeatureGenerator().generateScreen(ctx, screenName, feature: feature);
return 0;
} on StateError catch (e) {
Logger.error(e.message);
return 1;
} catch (e) {
Logger.error('Failed to generate screen: $e');
return 1;
}
}