Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 21 additions & 13 deletions tool/lib/commands/build.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ class BuildCommand extends Command {
..addUpdateFlutterFlag()
..addUpdatePerfettoFlag()
..addPubGetFlag()
..addBulidModeOption();
..addBulidModeOption()
..addWasmFlag();
}

@override
Expand All @@ -56,14 +57,14 @@ class BuildCommand extends Command {
Future run() async {
final repo = DevToolsRepo.getInstance();
final processManager = ProcessManager();

final results = argResults!;
final updateFlutter =
argResults![BuildCommandArgs.updateFlutter.flagName] as bool;
results[BuildCommandArgs.updateFlutter.flagName] as bool;
final updatePerfetto =
argResults![BuildCommandArgs.updatePerfetto.flagName] as bool;
final runPubGet = argResults![BuildCommandArgs.pubGet.flagName] as bool;
final buildMode =
argResults![BuildCommandArgs.buildMode.flagName] as String;
results[BuildCommandArgs.updatePerfetto.flagName] as bool;
final runPubGet = results[BuildCommandArgs.pubGet.flagName] as bool;
final buildMode = results[BuildCommandArgs.buildMode.flagName] as String;
final useWasm = results[BuildCommandArgs.wasm.flagName] as bool;

final webBuildDir =
Directory(path.join(repo.devtoolsAppDirectoryPath, 'build', 'web'));
Expand All @@ -87,20 +88,27 @@ class BuildCommand extends Command {
workingDirectory: repo.devtoolsAppDirectoryPath,
);

logStatus('building DevTools in $buildMode mode');
logStatus(
'building DevTools in $buildMode mode with '
'${useWasm ? 'dart2wasm' : 'dart2js'}',
);
await processManager.runAll(
commands: [
if (runPubGet) CliCommand.tool(['pub-get', '--only-main']),
CliCommand.flutter(
[
'build',
'web',
'--web-renderer',
'canvaskit',
if (useWasm)
'--wasm'
else ...[
'--web-renderer',
'canvaskit',
// Do not minify stack traces in debug mode.
if (buildMode == 'debug') '--dart2js-optimization=O1',
if (buildMode != 'debug') '--$buildMode',
],
'--pwa-strategy=offline-first',
// Do not minify stack traces in debug mode.
if (buildMode == 'debug') '--dart2js-optimization=O1',
if (buildMode != 'debug') '--$buildMode',
'--no-tree-shake-icons',
],
),
Expand Down
3 changes: 1 addition & 2 deletions tool/lib/commands/release_helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ class ReleaseHelperCommand extends Command {
argParser.addFlag(
_debugFlag,
negatable: false,
help:
'Whether to run this script for development purposes. This allows '
help: 'Whether to run this script for development purposes. This allows '
'local changes to be made to this script without throwing an '
'exception, and will checkout the current branch after executing.',
);
Expand Down
21 changes: 13 additions & 8 deletions tool/lib/commands/serve.dart
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ class ServeCommand extends Command {
..addUpdatePerfettoFlag()
..addPubGetFlag()
..addBulidModeOption()
..addWasmFlag()
// Flags defined in the server in DDS.
..addFlag(
_machineFlag,
Expand Down Expand Up @@ -120,22 +121,25 @@ class ServeCommand extends Command {
final repo = DevToolsRepo.getInstance();
final processManager = ProcessManager();

final buildApp = argResults![_buildAppFlag] as bool;
final debugServer = argResults![_debugServerFlag] as bool;
final results = argResults!;
final buildApp = results[_buildAppFlag] as bool;
final debugServer = results[_debugServerFlag] as bool;
final updateFlutter =
argResults![BuildCommandArgs.updateFlutter.flagName] as bool;
results[BuildCommandArgs.updateFlutter.flagName] as bool;
final updatePerfetto =
argResults![BuildCommandArgs.updatePerfetto.flagName] as bool;
final runPubGet = argResults![BuildCommandArgs.pubGet.flagName] as bool;
results[BuildCommandArgs.updatePerfetto.flagName] as bool;
final useWasm = results[BuildCommandArgs.wasm.flagName] as bool;
final runPubGet = results[BuildCommandArgs.pubGet.flagName] as bool;
final devToolsAppBuildMode =
argResults![BuildCommandArgs.buildMode.flagName] as String;
final serveWithDartSdk = argResults![_serveWithDartSdkFlag] as String?;
results[BuildCommandArgs.buildMode.flagName] as String;
final serveWithDartSdk = results[_serveWithDartSdkFlag] as String?;

// Any flag that we aren't removing here is intended to be passed through.
final remainingArguments = List.of(argResults!.arguments)
final remainingArguments = List.of(results.arguments)
..remove(BuildCommandArgs.updateFlutter.asArg())
..remove(BuildCommandArgs.updateFlutter.asArg(negated: true))
..remove(BuildCommandArgs.updatePerfetto.asArg())
..remove(BuildCommandArgs.wasm.asArg())
..remove(valueAsArg(_buildAppFlag))
..remove(valueAsArg(_buildAppFlag, negated: true))
..remove(valueAsArg(_debugServerFlag))
Expand Down Expand Up @@ -174,6 +178,7 @@ class ServeCommand extends Command {
'build',
BuildCommandArgs.updateFlutter.asArg(negated: !updateFlutter),
if (updatePerfetto) BuildCommandArgs.updatePerfetto.asArg(),
if (useWasm) BuildCommandArgs.wasm.asArg(),
'${BuildCommandArgs.buildMode.asArg()}=$devToolsAppBuildMode',
BuildCommandArgs.pubGet.asArg(negated: !runPubGet),
]),
Expand Down
9 changes: 9 additions & 0 deletions tool/lib/commands/shared.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,20 @@ extension BuildCommandArgsExtension on ArgParser {
'"tool/flutter-sdk" directory.',
);
}

void addWasmFlag() {
addFlag(
BuildCommandArgs.wasm.flagName,
defaultsTo: false,
help: 'Whether to build DevTools with dart2wasm instead of dart2js.',
);
}
}

enum BuildCommandArgs {
buildMode('build-mode'),
pubGet('pub-get'),
wasm('wasm'),
updateFlutter('update-flutter'),
updatePerfetto('update-perfetto');

Expand Down
3 changes: 1 addition & 2 deletions tool/lib/model.dart
Original file line number Diff line number Diff line change
Expand Up @@ -206,8 +206,7 @@ class FlutterSdk {
static String get dartWrapperExecutableName =>
Platform.isWindows ? 'dart.bat' : 'dart';

String get flutterExePath =>
path.join(sdkPath, 'bin', flutterExecutableName);
String get flutterExePath => path.join(sdkPath, 'bin', flutterExecutableName);

String get dartExePath =>
path.join(sdkPath, 'bin', dartWrapperExecutableName);
Expand Down