mirror of
https://github.com/flutter/flutter
synced 2024-10-13 11:42:54 +00:00
146 lines
6 KiB
Dart
146 lines
6 KiB
Dart
// 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:async';
|
|
|
|
import 'package:args/args.dart';
|
|
import 'package:args/command_runner.dart';
|
|
import 'package:logging/logging.dart';
|
|
import 'package:sky_tools/src/application_package.dart';
|
|
import 'package:sky_tools/src/build.dart';
|
|
import 'package:sky_tools/src/cache.dart';
|
|
import 'package:sky_tools/src/init.dart';
|
|
import 'package:sky_tools/src/install.dart';
|
|
import 'package:sky_tools/src/run_mojo.dart';
|
|
|
|
class FlutterCommandRunner extends CommandRunner {
|
|
FlutterCommandRunner() : super('flutter', 'Manage your flutter app development.') {
|
|
argParser.addFlag('verbose',
|
|
abbr: 'v',
|
|
negatable: false,
|
|
help: 'Noisy logging, including all shell commands executed.');
|
|
argParser.addFlag('very-verbose',
|
|
negatable: false,
|
|
help: 'Very noisy logging, including the output of all '
|
|
'shell commands executed.');
|
|
|
|
argParser.addSeparator('Global build selection options:');
|
|
argParser.addFlag('debug',
|
|
negatable: false,
|
|
help:
|
|
'Set this if you are building Sky locally and want to use the debug build products. '
|
|
'When set, attempts to automaticaly determine sky-src-path if sky-src-path is '
|
|
'not set. Not normally required.');
|
|
argParser.addFlag('release',
|
|
negatable: false,
|
|
help:
|
|
'Set this if you are building Sky locally and want to use the release build products. '
|
|
'When set, attempts to automaticaly determine sky-src-path if sky-src-path is '
|
|
'not set. Note that release is not compatible with the listen command '
|
|
'on iOS devices and simulators. Not normally required.');
|
|
argParser.addOption('sky-src-path',
|
|
help: 'Path to your Sky src directory, if you are building Sky locally. '
|
|
'Ignored if neither debug nor release is set. Not normally required.');
|
|
argParser.addOption('android-debug-build-path',
|
|
help:
|
|
'Path to your Android Debug out directory, if you are building Sky locally. '
|
|
'This path is relative to sky-src-path. Not normally required.',
|
|
defaultsTo: 'out/android_Debug/');
|
|
argParser.addOption('android-release-build-path',
|
|
help:
|
|
'Path to your Android Release out directory, if you are building Sky locally. '
|
|
'This path is relative to sky-src-path. Not normally required.',
|
|
defaultsTo: 'out/android_Release/');
|
|
argParser.addOption('ios-debug-build-path',
|
|
help:
|
|
'Path to your iOS Debug out directory, if you are building Sky locally. '
|
|
'This path is relative to sky-src-path. Not normally required.',
|
|
defaultsTo: 'out/ios_Debug/');
|
|
argParser.addOption('ios-release-build-path',
|
|
help:
|
|
'Path to your iOS Release out directory, if you are building Sky locally. '
|
|
'This path is relative to sky-src-path. Not normally required.',
|
|
defaultsTo: 'out/ios_Release/');
|
|
argParser.addOption('ios-sim-debug-build-path',
|
|
help:
|
|
'Path to your iOS Simulator Debug out directory, if you are building Sky locally. '
|
|
'This path is relative to sky-src-path. Not normally required.',
|
|
defaultsTo: 'out/ios_sim_Debug/');
|
|
argParser.addOption('ios-sim-release-build-path',
|
|
help:
|
|
'Path to your iOS Simulator Release out directory, if you are building Sky locally. '
|
|
'This path is relative to sky-src-path. Not normally required.',
|
|
defaultsTo: 'out/ios_sim_Release/');
|
|
}
|
|
|
|
Future<int> runCommand(ArgResults topLevelResults) async {
|
|
if (topLevelResults['verbose']) {
|
|
Logger.root.level = Level.INFO;
|
|
}
|
|
|
|
if (topLevelResults['very-verbose']) {
|
|
Logger.root.level = Level.FINE;
|
|
}
|
|
|
|
_setupPaths(topLevelResults);
|
|
|
|
return super.runCommand(topLevelResults);
|
|
}
|
|
|
|
void _setupPaths(ArgResults results) {
|
|
if (results['debug'] || results['release']) {
|
|
if (results['sky-src-path'] == null) {
|
|
// TODO(iansf): Figure out how to get the default src path
|
|
assert(false);
|
|
}
|
|
ApplicationPackageFactory.srcPath = results['sky-src-path'];
|
|
} else {
|
|
assert(false);
|
|
// TODO(iansf): set paths up for commands using PREBUILT binaries
|
|
// ApplicationPackageFactory.setBuildPath(BuildType.PREBUILT,
|
|
// BuildPlatform.android, results['android-debug-build-path']);
|
|
}
|
|
|
|
if (results['debug']) {
|
|
ApplicationPackageFactory.defaultBuildType = BuildType.debug;
|
|
ApplicationPackageFactory.setBuildPath(BuildType.debug,
|
|
BuildPlatform.android, results['android-debug-build-path']);
|
|
ApplicationPackageFactory.setBuildPath(
|
|
BuildType.debug, BuildPlatform.iOS, results['ios-debug-build-path']);
|
|
ApplicationPackageFactory.setBuildPath(BuildType.debug,
|
|
BuildPlatform.iOSSimulator, results['ios-sim-debug-build-path']);
|
|
}
|
|
if (results['release']) {
|
|
ApplicationPackageFactory.defaultBuildType = BuildType.release;
|
|
ApplicationPackageFactory.setBuildPath(BuildType.release,
|
|
BuildPlatform.android, results['android-release-build-path']);
|
|
ApplicationPackageFactory.setBuildPath(BuildType.release, BuildPlatform.iOS,
|
|
results['ios-release-build-path']);
|
|
ApplicationPackageFactory.setBuildPath(BuildType.release,
|
|
BuildPlatform.iOSSimulator, results['ios-sim-release-build-path']);
|
|
}
|
|
}
|
|
}
|
|
|
|
void main(List<String> args) {
|
|
Logger.root.level = Level.WARNING;
|
|
Logger.root.onRecord.listen((LogRecord rec) {
|
|
print('${rec.level.name}: ${rec.message}');
|
|
if (rec.error != null) {
|
|
print(rec.error);
|
|
}
|
|
if (rec.stackTrace != null) {
|
|
print(rec.stackTrace);
|
|
}
|
|
});
|
|
|
|
new FlutterCommandRunner()
|
|
..addCommand(new BuildCommand())
|
|
..addCommand(new CacheCommand())
|
|
..addCommand(new InitCommand())
|
|
..addCommand(new InstallCommand())
|
|
..addCommand(new RunMojoCommand())
|
|
..run(args);
|
|
}
|