diff --git a/lib/web_ui/dev/analyze.dart b/lib/web_ui/dev/analyze.dart new file mode 100644 index 0000000000000..b7038480720ed --- /dev/null +++ b/lib/web_ui/dev/analyze.dart @@ -0,0 +1,67 @@ +// Copyright 2013 The Flutter 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/command_runner.dart'; + +import 'environment.dart'; +import 'pipeline.dart'; +import 'utils.dart'; + +class AnalyzeCommand extends Command with ArgUtils { + @override + String get name => 'analyze'; + + @override + String get description => 'Analyze the Flutter web engine.'; + + @override + FutureOr run() async { + final Pipeline buildPipeline = Pipeline(steps: [ + PubGetStep(), + AnalyzeStep(), + ]); + await buildPipeline.run(); + return true; + } +} + +/// Runs `dart pub get`. +class PubGetStep extends ProcessStep { + @override + String get description => 'pub get'; + + @override + bool get isSafeToInterrupt => true; + + @override + Future createProcess() { + print('Running `dart pub get`...'); + return startProcess( + environment.dartExecutable, + ['pub', 'get'], + workingDirectory: environment.webUiRootDir.path, + ); + } +} + +/// Runs `dart analyze --fatal-infos`. +class AnalyzeStep extends ProcessStep { + @override + String get description => 'analyze'; + + @override + bool get isSafeToInterrupt => true; + + @override + Future createProcess() { + print('Running `dart analyze`...'); + return startProcess( + environment.dartExecutable, + ['analyze', '--fatal-infos'], + workingDirectory: environment.webUiRootDir.path, + ); + } +} diff --git a/lib/web_ui/dev/felt.bat b/lib/web_ui/dev/felt.bat index 85ad05998685c..bfa2102e2dcd7 100644 --- a/lib/web_ui/dev/felt.bat +++ b/lib/web_ui/dev/felt.bat @@ -35,38 +35,21 @@ IF NOT DEFINED DART_SDK_DIR ( ) SET DART_BIN=%DART_SDK_DIR%\bin\dart -SET needsHostDebugUnoptRebuild=0 -for %%x in (%*) do ( - if ["%%~x"]==["--clean"] ( - ECHO Clean rebuild requested - SET needsHostDebugUnoptRebuild=1 - ) -) - -IF NOT EXIST %OUT_DIR% (SET needsHostDebugUnoptRebuild=1) -IF NOT EXIST %HOST_DEBUG_UNOPT_DIR% (SET needsHostDebugUnoptRebuild=1) - -IF %needsHostDebugUnoptRebuild%==1 ( - ECHO Building host_debug_unopt - :: Delete old snapshot, if any, because the new Dart SDK may invalidate it. - IF EXIST "%SNAPSHOT_PATH%" ( - del %SNAPSHOT_PATH% - ) - CALL gclient sync -D - CALL python %GN% --unoptimized --full-dart-sdk - CALL ninja -C %HOST_DEBUG_UNOPT_DIR%) - cd %WEB_UI_DIR% -IF NOT EXIST "%SNAPSHOT_PATH%" ( - ECHO Precompiling felt snapshot - CALL %DART_SDK_DIR%\bin\dart pub get - %DART_BIN% --snapshot="%SNAPSHOT_PATH%" --packages="%WEB_UI_DIR%\.dart_tool\package_config.json" %FELT_PATH% -) -IF "%1"=="test" ( - %DART_SDK_DIR%\bin\dart --packages="%WEB_UI_DIR%\.dart_tool\package_config.json" "%SNAPSHOT_PATH%" %* --browser=chrome +IF FELT_USE_SNAPSHOT=="0" ( + ECHO Invoking felt.dart without snapshot + SET FELT_TARGET=%FELT_PATH% ) ELSE ( - %DART_SDK_DIR%\bin\dart --packages="%WEB_UI_DIR%\.dart_tool\package_config.json" "%SNAPSHOT_PATH%" %* + IF NOT EXIST "%SNAPSHOT_PATH%" ( + ECHO Precompiling felt snapshot + CALL %DART_BIN% pub get + %DART_BIN% --snapshot="%SNAPSHOT_PATH%" --packages="%WEB_UI_DIR%\.dart_tool\package_config.json" %FELT_PATH% + ) + SET FELT_TARGET=%SNAPSHOT_PATH% + ECHO Invoking felt snapshot ) +%DART_BIN% --packages="%WEB_UI_DIR%\.dart_tool\package_config.json" "%FELT_TARGET%" %* + EXIT /B %ERRORLEVEL% diff --git a/lib/web_ui/dev/felt.dart b/lib/web_ui/dev/felt.dart index 2e6e6d156cf46..1dc0ccbb74d00 100644 --- a/lib/web_ui/dev/felt.dart +++ b/lib/web_ui/dev/felt.dart @@ -6,6 +6,7 @@ import 'dart:io' as io; import 'package:args/command_runner.dart'; +import 'analyze.dart'; import 'build.dart'; import 'clean.dart'; import 'exceptions.dart'; @@ -19,6 +20,7 @@ CommandRunner runner = CommandRunner( 'felt', 'Command-line utility for building and testing Flutter web engine.', ) + ..addCommand(AnalyzeCommand()) ..addCommand(BuildCommand()) ..addCommand(CleanCommand()) ..addCommand(GenerateFallbackFontDataCommand())