blob: f92a4f4eab8c1bf95b65cab9aa5f30e898b01d57 [file] [log] [blame]
// 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.
library mojom.command.single;
import 'dart:async';
import 'dart:io';
import 'package:args/args.dart';
import 'package:args/command_runner.dart';
import 'package:mojom/src/commands/mojom_command.dart';
import 'package:mojom/src/generate.dart';
import 'package:mojom/src/utils.dart';
import 'package:path/path.dart' as path;
class SinglePackageCommand extends MojomCommand {
String get name => 'single';
String get description => 'Generate bindings for a package.';
String get invocation => 'mojom.dart single';
Directory _package;
SinglePackageCommand() {
argParser.addOption('package',
abbr: 'p',
defaultsTo: Directory.current.path,
help: 'Path to a Dart package.');
}
run() async {
MojomCommand.setupLogging();
await _validateArguments();
var mojomFinder = new MojomFinder(mojomRoot, _package.parent, skips);
List<PackageInfo> packageInfos = await mojomFinder.find();
var generator = new MojomGenerator(mojoSdk,
dryRun: dryRun, errorOnDuplicate: errorOnDuplicate);
for (PackageInfo info in packageInfos) {
await generator.generate(info);
}
}
_validateArguments() async {
await validateArguments();
_package = new Directory(makeAbsolute(argResults['package']));
log.info("package = $_package");
if (!(await _package.exists())) {
throw new CommandLineError("The package $_package must exist");
}
}
}