// Copyright 2018 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:async'; import 'package:args/args.dart'; import 'runner.dart' as runner; import 'src/artifacts.dart'; import 'src/base/common.dart'; import 'src/base/context.dart'; import 'src/base/file_system.dart'; import 'src/commands/attach.dart'; import 'src/commands/devices.dart'; import 'src/commands/shell_completion.dart'; import 'src/fuchsia/fuchsia_sdk.dart'; import 'src/runner/flutter_command.dart'; final ArgParser parser = ArgParser.allowAnything() ..addOption('verbose', abbr: 'v') ..addOption('help', abbr: 'h') ..addOption( 'frontend-server', help: 'The path to the frontend server snapshot.', ) ..addOption( 'dart-sdk', help: 'The path to the patched dart-sdk binary.', ) ..addOption( 'ssh-config', help: 'The path to the ssh configuration file.', ); /// Main entry point for fuchsia commands. /// /// This function is intended to be used within the fuchsia source tree. Future main(List args) async { final ArgResults results = parser.parse(args); final bool verbose = results['verbose']; final bool help = results['help']; final bool verboseHelp = help && verbose; final File dartSdk = fs.file(results['dart-sdk']); final File frontendServer = fs.file(results['frontend-server']); final File sshConfig = fs.file(results['ssh-config']); if (!dartSdk.existsSync()) { throwToolExit('--dart-sdk is required: ${dartSdk.path} does not exist.'); } if (!frontendServer.existsSync()) { throwToolExit('--frontend-server is required: ${frontendServer.path} does not exist.'); } if (!sshConfig.existsSync()) { throwToolExit('--ssh-config is required: ${sshConfig.path} does not exist.'); } await runner.run(args, [ AttachCommand(verboseHelp: verboseHelp), DevicesCommand(), ShellCompletionCommand(), ], verbose: verbose, muteCommandLogging: help, verboseHelp: verboseHelp, overrides: { FuchsiaArtifacts: () => FuchsiaArtifacts(sshConfig: sshConfig), Artifacts: () => OverrideArtifacts( parent: CachedArtifacts(), frontendServer: frontendServer, engineDartBinary: dartSdk, ) }); }