|  | @ECHO off | 
|  | REM Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | REM Use of this source code is governed by a BSD-style license that can be | 
|  | REM found in the LICENSE file. | 
|  |  | 
|  | SETLOCAL ENABLEDELAYEDEXPANSION | 
|  | FOR %%i IN ("%~dp0..") DO SET "flutter_root=%%~fi" REM Get the parent directory | 
|  | SET flutter_tools_dir=%flutter_root%\packages\flutter_tools | 
|  | SET flutter_dir=%flutter_root%\packages\flutter | 
|  | SET snapshot_path=%flutter_root%\bin\cache\flutter_tools.snapshot | 
|  | SET stamp_path=%flutter_root%\bin\cache\flutter_tools.stamp | 
|  | SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart | 
|  | REM TODO: Don't require dart to be on the user's path | 
|  | SET dart=dart | 
|  |  | 
|  | REM Set current working directory to the flutter directory | 
|  | PUSHD %flutter_root% | 
|  | REM IF doesn't have an "or". Instead, just use GOTO | 
|  | FOR /f %%r IN ('git rev-parse HEAD') DO SET revision=%%r | 
|  | IF NOT EXIST %snapshot_path% GOTO do_snapshot | 
|  | IF NOT EXIST %stamp_path% GOTO do_snapshot | 
|  | FOR /f "delims=" %%x in (%stamp_path%) do set stamp_value=%%x | 
|  | IF "!stamp_value!" NEQ "!revision!" GOTO do_snapshot | 
|  |  | 
|  | REM Getting modified timestamps in a batch file is ... troublesome | 
|  | REM More info: http://stackoverflow.com/questions/1687014/how-do-i-compare-timestamps-of-files-in-a-dos-batch-script | 
|  | FOR %%f IN (%flutter_tools_dir%\pubspec.yaml) DO SET yamlt=%%~tf | 
|  | FOR %%a IN (%flutter_tools_dir%\pubspec.lock) DO SET lockt=%%~ta | 
|  | IF !lockt! LSS !yamlt! GOTO do_snapshot | 
|  |  | 
|  | GOTO :after_snapshot | 
|  |  | 
|  | :do_snapshot | 
|  | CD "%flutter_tools_dir%" | 
|  | ECHO Updating flutter tool... | 
|  | CALL pub.bat get | 
|  | CD "%flutter_dir" | 
|  | REM Allows us to check if sky_engine's REVISION is correct | 
|  | CALL pub.bat get | 
|  | CD "%flutter_root%" | 
|  | CALL %dart% --snapshot="%snapshot_path%" --package-root="%flutter_tools_dir%\packages" "%script_path%" | 
|  | <nul SET /p=%revision%> "%stamp_path%" | 
|  |  | 
|  | :after_snapshot | 
|  |  | 
|  | REM Go back to last working directory | 
|  | POPD | 
|  | CALL %dart% "%snapshot_path%" %* | 
|  |  | 
|  | IF /I "%ERRORLEVEL%" EQU "253" ( | 
|  | CALL %dart% --snapshot="%snapshot_path%" --package-root="%flutter_tools_dir%\packages" "%script_path%" | 
|  | CALL %dart% "%snapshot_path%" %* | 
|  | ) |