// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'dart:io'; import 'package:args/args.dart'; import 'package:sky_tools/src/common.dart'; import 'package:sky_tools/src/init.dart'; void main(List args) { Map handlers = {}; ArgParser parser = new ArgParser(); parser.addSeparator('options:'); parser.addFlag('help', abbr: 'h', negatable: false, help: 'Display this help message.'); parser.addSeparator('commands:'); CommandHandler handler = new InitCommandHandler(); parser.addCommand(handler.name, handler.parser); handlers[handler.name] = handler; ArgResults results; try { results = parser.parse(args); } catch (e) { _printUsage(parser, handlers, e is FormatException ? e.message : '${e}'); exit(1); } if (results['help']) { _printUsage(parser, handlers); } else if (results.command != null) { handlers[results.command.name].processArgResults(results.command); } else { _printUsage(parser, handlers, 'No command specified.'); exit(1); } } void _printUsage(ArgParser parser, Map handlers, [String message]) { if (message != null) { print('${message}\n'); } print('usage: sky_tools [arguments]'); print(''); print(parser.usage); handlers.forEach((String command, CommandHandler handler) { print(' ${command.padRight(10)} ${handler.description}'); }); }