executable.dart 4.57 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5 6
import 'dart:async';

7
import 'runner.dart' as runner;
8
import 'src/base/context.dart';
9
import 'src/base/template.dart';
10 11 12 13
// The build_runner code generation is provided here to make it easier to
// avoid introducing the dependency into google3. Not all build* packages
// are synced internally.
import 'src/build_runner/build_runner.dart';
14
import 'src/build_runner/mustache_template.dart';
15
import 'src/build_runner/resident_web_runner.dart';
16
import 'src/build_runner/web_compilation_delegate.dart';
17
import 'src/codegen.dart';
Hixie's avatar
Hixie committed
18
import 'src/commands/analyze.dart';
19
import 'src/commands/assemble.dart';
20
import 'src/commands/attach.dart';
21
import 'src/commands/build.dart';
22
import 'src/commands/channel.dart';
23
import 'src/commands/clean.dart';
24
import 'src/commands/config.dart';
25
import 'src/commands/create.dart';
Devon Carew's avatar
Devon Carew committed
26
import 'src/commands/daemon.dart';
27
import 'src/commands/devices.dart';
28
import 'src/commands/doctor.dart';
29
import 'src/commands/downgrade.dart';
yjbanov's avatar
yjbanov committed
30
import 'src/commands/drive.dart';
31
import 'src/commands/emulators.dart';
32
import 'src/commands/format.dart';
33
import 'src/commands/generate.dart';
34
import 'src/commands/ide_config.dart';
35
import 'src/commands/inject_plugins.dart';
36 37
import 'src/commands/install.dart';
import 'src/commands/logs.dart';
38
import 'src/commands/make_host_app_editable.dart';
39
import 'src/commands/packages.dart';
40
import 'src/commands/precache.dart';
41
import 'src/commands/run.dart';
Devon Carew's avatar
Devon Carew committed
42
import 'src/commands/screenshot.dart';
43
import 'src/commands/shell_completion.dart';
44
import 'src/commands/symbolize.dart';
45
import 'src/commands/test.dart';
46
import 'src/commands/train.dart';
47
import 'src/commands/unpack.dart';
48
import 'src/commands/update_packages.dart';
49
import 'src/commands/upgrade.dart';
50
import 'src/commands/version.dart';
51
import 'src/globals.dart' as globals;
52
import 'src/runner/flutter_command.dart';
53
import 'src/web/compile.dart';
54
import 'src/web/web_runner.dart';
55

56 57
/// Main entry point for commands.
///
58
/// This function is intended to be used from the `flutter` command line tool.
59
Future<void> main(List<String> args) async {
60
  final bool verbose = args.contains('-v') || args.contains('--verbose');
61 62 63

  final bool doctor = (args.isNotEmpty && args.first == 'doctor') ||
      (args.length == 2 && verbose && args.last == 'doctor');
64
  final bool help = args.contains('-h') || args.contains('--help') ||
65
      (args.isNotEmpty && args.first == 'help') || (args.length == 1 && verbose);
66
  final bool muteCommandLogging = help || doctor;
67
  final bool verboseHelp = help && verbose;
Devon Carew's avatar
Devon Carew committed
68

69
  await runner.run(args, <FlutterCommand>[
70 71 72 73 74 75 76 77
    AnalyzeCommand(
      verboseHelp: verboseHelp,
      fileSystem: globals.fs,
      platform: globals.platform,
      processManager: globals.processManager,
      logger: globals.logger,
      terminal: globals.terminal,
    ),
78
    AssembleCommand(),
79 80 81
    AttachCommand(verboseHelp: verboseHelp),
    BuildCommand(verboseHelp: verboseHelp),
    ChannelCommand(verboseHelp: verboseHelp),
82
    CleanCommand(verbose: verbose),
83
    ConfigCommand(verboseHelp: verboseHelp),
84
    CreateCommand(),
85 86 87
    DaemonCommand(hidden: !verboseHelp),
    DevicesCommand(),
    DoctorCommand(verbose: verbose),
88
    DowngradeCommand(),
89 90 91
    DriveCommand(),
    EmulatorsCommand(),
    FormatCommand(),
92
    GenerateCommand(),
93 94 95 96
    IdeConfigCommand(hidden: !verboseHelp),
    InjectPluginsCommand(hidden: !verboseHelp),
    InstallCommand(),
    LogsCommand(),
97
    MakeHostAppEditableCommand(),
98
    PackagesCommand(),
99
    PrecacheCommand(verboseHelp: verboseHelp),
100 101 102 103
    RunCommand(verboseHelp: verboseHelp),
    ScreenshotCommand(),
    ShellCompletionCommand(),
    TestCommand(verboseHelp: verboseHelp),
104
    TrainingCommand(),
105
    UnpackCommand(),
106 107
    UpdatePackagesCommand(hidden: !verboseHelp),
    UpgradeCommand(),
108
    VersionCommand(),
109 110 111 112
    SymbolizeCommand(
      stdio: globals.stdio,
      fileSystem: globals.fs,
    ),
113 114
  ], verbose: verbose,
     muteCommandLogging: muteCommandLogging,
115 116 117 118
     verboseHelp: verboseHelp,
     overrides: <Type, Generator>{
       // The build runner instance is not supported in google3 because
       // the build runner packages are not synced internally.
119
       CodeGenerator: () => const BuildRunner(),
120
       WebCompilationProxy: () => BuildRunnerWebCompilationProxy(),
121
       // The web runner is not supported in google3 because it depends
122 123
       // on dwds.
       WebRunnerFactory: () => DwdsWebRunnerFactory(),
124 125
       // The mustache dependency is different in google3
       TemplateRenderer: () => const MustacheTemplateRenderer(),
126
     });
127
}