DependenciesOptions.fromArgs constructor
Creates a DependenciesOptions object from the command-line arguments.
Parses the args
list and sets the corresponding options.
If --help
is passed or no path is provided, a special status is returned.
Implementation
factory DependenciesOptions.fromArgs(List<String> args) {
final parser =
ArgParser()
..addFlag(
'reverse',
negatable: false,
help: 'Reverse dependencies order',
)
..addFlag('console', negatable: false, help: 'Output to console')
..addOption('text', help: 'Output to a text file')
..addOption('json', help: 'Output to a JSON file')
..addOption('yaml', help: 'Output to a YAML file')
..addOption(
'sort',
allowed: ['path', 'dependencies', 'none'],
defaultsTo: 'dependencies',
help: 'Sort mode (path, dependencies, none)',
)
..addFlag(
'help',
abbr: 'h',
negatable: false,
help: 'Show usage information',
);
ArgResults results;
try {
results = parser.parse(args);
} catch (ex) {
print(ex);
return DependenciesOptions(path: '', status: 'arguments error');
}
if (results['help'] == true) {
print('Usage: dependencies <path> [options]');
print(parser.usage);
return DependenciesOptions(path: '', status: 'help');
}
if (results.rest.isEmpty) {
return DependenciesOptions(path: '', status: 'No path provided.');
}
final path = results.rest.first;
final reverse = results['reverse'] ?? false;
bool outputConsole = results['console'] ?? false;
final outputTextFile = results['text'];
final outputJsonFile = results['json'];
final outputYamlFile = results['yaml'];
final sortMode = results['sort'] ?? 'dependencies';
final noOutputSpecified =
!outputConsole &&
outputTextFile == null &&
outputJsonFile == null &&
outputYamlFile == null;
if (noOutputSpecified) {
outputConsole = true;
}
return DependenciesOptions(
path: path,
reverse: reverse,
outputConsole: outputConsole,
outputTextFile: outputTextFile,
outputJsonFile: outputJsonFile,
outputYamlFile: outputYamlFile,
sortMode: sortMode,
);
}