|
| 1 | +:: felt: a command-line utility for Windows for building and testing |
| 2 | +:: Flutter web engine. |
| 3 | +:: FELT stands for Flutter Engine Local Tester. |
| 4 | + |
| 5 | +@ECHO OFF |
| 6 | +SETLOCAL |
| 7 | + |
| 8 | +:: Make sure gclient and ninja exist. Otherwise felt won't work. |
| 9 | +FOR /F "tokens=1-2 delims=:" %%a in ('where gclient') DO SET GCLIENT_PATH=%%b |
| 10 | +IF %GCLIENT_PATH%==[] (ECHO "ERROR: gclient is not in your PATH") |
| 11 | + |
| 12 | +FOR /F "tokens=1-2 delims=:" %%a in ('where ninja') DO SET NINJA_PATH=%%b |
| 13 | +IF %NINJA_PATH%==[] (ECHO "ERROR: ninja is not in your PATH") |
| 14 | + |
| 15 | +:: Starting from this script's path, walk up to engine source directory. |
| 16 | +SET SCRIPT_DIR=%~dp0 |
| 17 | +FOR %%a IN ("%SCRIPT_DIR:~0,-1%") DO SET TMP=%%~dpa |
| 18 | +FOR %%a IN ("%TMP:~0,-1%") DO SET TMP=%%~dpa |
| 19 | +FOR %%a IN ("%TMP:~0,-1%") DO SET TMP=%%~dpa |
| 20 | +FOR %%a IN ("%TMP:~0,-1%") DO SET ENGINE_SRC_DIR=%%~dpa |
| 21 | + |
| 22 | +SET ENGINE_SRC_DIR=%ENGINE_SRC_DIR:~0,-1% |
| 23 | +SET OUT_DIR=%ENGINE_SRC_DIR%\out |
| 24 | +SET HOST_DEBUG_UNOPT_DIR=%OUT_DIR%\host_debug_unopt |
| 25 | +SET DART_SDK_DIR=%HOST_DEBUG_UNOPT_DIR%\dart-sdk |
| 26 | +SET DART_BIN=%DART_SDK_DIR%\bin\dart |
| 27 | +SET PUB_BIN=%DART_SDK_DIR%\bin\pub |
| 28 | +SET FLUTTER_DIR=%ENGINE_SRC_DIR%\flutter |
| 29 | +SET WEB_UI_DIR=%FLUTTER_DIR%\lib\web_ui |
| 30 | +SET DEV_DIR=%WEB_UI_DIR%\dev |
| 31 | +SET FELT_PATH=%DEV_DIR%\felt.dart |
| 32 | +SET DART_TOOL_DIR=%WEB_UI_DIR%\.dart_tool |
| 33 | +SET SNAPSHOT_PATH=%DART_TOOL_DIR%\felt.snapshot |
| 34 | + |
| 35 | +SET needsHostDebugUnoptRebuild=0 |
| 36 | +for %%x in (%*) do ( |
| 37 | + if ["%%~x"]==["--clean"] ( |
| 38 | + ECHO Clean rebuild requested |
| 39 | + SET needsHostDebugUnoptRebuild=1 |
| 40 | + ) |
| 41 | +) |
| 42 | + |
| 43 | +IF NOT EXIST %OUT_DIR% (SET needsHostDebugUnoptRebuild=1) |
| 44 | +IF NOT EXIST %HOST_DEBUG_UNOPT_DIR% (SET needsHostDebugUnoptRebuild=1) |
| 45 | + |
| 46 | +IF %needsHostDebugUnoptRebuild%==1 ( |
| 47 | + ECHO Building host_debug_unopt |
| 48 | + :: Delete old snapshot, if any, because the new Dart SDK may invalidate it. |
| 49 | + IF EXIST "%SNAPSHOT_PATH%" ( |
| 50 | + del %SNAPSHOT_PATH% |
| 51 | + ) |
| 52 | + CALL gclient sync -D |
| 53 | + CALL python %GN% --unoptimized --full-dart-sdk |
| 54 | + CALL ninja -C %HOST_DEBUG_UNOPT_DIR%) |
| 55 | + |
| 56 | +cd %WEB_UI_DIR% |
| 57 | +IF NOT EXIST "%SNAPSHOT_PATH%" ( |
| 58 | + ECHO Precompiling felt snapshot |
| 59 | + CALL %PUB_BIN% get |
| 60 | + %DART_BIN% --snapshot="%SNAPSHOT_PATH%" --packages="%WEB_UI_DIR%\.packages" %FELT_PATH% |
| 61 | +) |
| 62 | + |
| 63 | +IF %1==test ( |
| 64 | + %DART_SDK_DIR%\bin\dart --packages="%WEB_UI_DIR%\.packages" "%SNAPSHOT_PATH%" %* --browser=chrome |
| 65 | +) ELSE ( |
| 66 | + %DART_SDK_DIR%\bin\dart --packages="%WEB_UI_DIR%\.packages" "%SNAPSHOT_PATH%" %* |
| 67 | +) |
| 68 | + |
| 69 | +EXIT /B %ERRORLEVEL% |
0 commit comments