@ECHO off
REM Copyright 2014 The Flutter 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.

REM ---------------------------------- NOTE ----------------------------------
REM
REM Please keep the logic in this file consistent with the logic in the
REM `shared.sh` script in the same directory to ensure that Flutter & Dart continue to
REM work across all platforms!
REM
REM --------------------------------------------------------------------------

SETLOCAL

REM Ensure we are running on 64-bit Windows (32-bit is not supported).
REM If this is a 32-bit process emulated by WOW64,
REM PROCESSOR_ARCHITECTURE is the process architecture and
REM PROCESSOR_ARCHITEW6432 is the processor architecture.
IF "%PROCESSOR_ARCHITECTURE%"=="x86" (
  IF "%PROCESSOR_ARCHITEW6432%"=="" (
    ECHO Flutter requires 64-bit versions of Windows
    EXIT 1
  )
)

SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools
SET cache_dir=%FLUTTER_ROOT%\bin\cache
SET snapshot_path=%cache_dir%\flutter_tools.snapshot
SET snapshot_path_old=%cache_dir%\flutter_tools.snapshot.old
SET stamp_path=%cache_dir%\flutter_tools.stamp
SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart
SET dart_sdk_path=%cache_dir%\dart-sdk
SET engine_stamp=%cache_dir%\engine-dart-sdk.stamp
SET engine_version_path=%cache_dir%\engine.stamp
SET dart=%dart_sdk_path%\bin\dart.exe

REM Ensure that bin/cache exists.
IF NOT EXIST "%cache_dir%" MKDIR "%cache_dir%"

REM If the cache still doesn't exist, fail with an error that we probably don't have permissions.
IF NOT EXIST "%cache_dir%" (
  ECHO Error: Unable to create cache directory at                                 1>&2
  ECHO            %cache_dir%                                                     1>&2
  ECHO.                                                                           1>&2
  ECHO        This may be because flutter doesn't have write permissions for      1>&2
  ECHO        this path. Try moving the flutter directory to a writable location, 1>&2
  ECHO        such as within your home directory.                                 1>&2
  EXIT 1
)

:acquire_lock
2>NUL (
  REM "3" is now stderr because of "2>NUL".
  CALL :subroutine %* 2>&3 9> "%cache_dir%\flutter.bat.lock" || GOTO acquire_lock
)
GOTO :after_subroutine

:subroutine
  REM If present, run the bootstrap script first
  SET bootstrap_path=%FLUTTER_ROOT%\bin\internal\bootstrap.bat
  IF EXIST "%bootstrap_path%" (
    CALL "%bootstrap_path%"
  )

  REM Get the Git revision.
  2>NUL (
    REM 'FOR /f' spawns a new terminal instance to run the command. If an
    REM 'AutoRun' command is defined in the user's registry, that command could
    REM change the working directory, and then we wouldn't be in the directory
    REM we expect to be in. To prevent this, we need to 'PUSHD %FLUTTER_ROOT%'
    REM before getting the git revision.
    REM
    REM See https://github.com/flutter/flutter/issues/159018
    FOR /f %%r IN ('PUSHD %FLUTTER_ROOT% ^& $git rev-parse HEAD') DO (
      SET revision=%%r
    )
  )
  SET compilekey="%revision%:%FLUTTER_TOOL_ARGS%"

  REM Invalidate cache if:
  REM  * SNAPSHOT_PATH is not a file, or
  REM  * STAMP_PATH is not a file, or
  REM  * STAMP_PATH is an empty file, or
  REM  * Contents of STAMP_PATH is not what we are going to compile, or
  REM  * pubspec.yaml last modified after pubspec.lock

  REM The following IF conditions are all linked with a logical OR. However,
  REM there is no OR operator in batch and a GOTO construct is used as replacement.

  CALL :do_ensure_engine_version
  IF NOT EXIST "%engine_stamp%" GOTO do_sdk_update_and_snapshot
  SET /P dart_required_version=<"%engine_version_path%"
  SET /P dart_installed_version=<"%engine_stamp%"
  IF %dart_required_version% NEQ %dart_installed_version% GOTO do_sdk_update_and_snapshot
  IF NOT EXIST "%snapshot_path%" GOTO do_snapshot
  IF NOT EXIST "%stamp_path%" GOTO do_snapshot
  SET /P stamp_value=<"%stamp_path%"
  IF %stamp_value% NEQ %compilekey% GOTO do_snapshot
  SET pubspec_yaml_path=%flutter_tools_dir%\pubspec.yaml
  SET pubspec_lock_path=%flutter_tools_dir%\pubspec.lock
  FOR /F %%i IN ('DIR /B /O:D "%pubspec_yaml_path%" "%pubspec_lock_path%"') DO SET newer_file=%%i
  FOR %%i IN (%pubspec_yaml_path%) DO SET pubspec_yaml_timestamp=%%~ti
  FOR %%i IN (%pubspec_lock_path%) DO SET pubspec_lock_timestamp=%%~ti
  IF "%pubspec_yaml_timestamp%" == "%pubspec_lock_timestamp%" SET newer_file=""
  IF "%newer_file%" EQU "pubspec.yaml" GOTO do_snapshot

  REM Everything is up-to-date - exit subroutine
  EXIT /B

  :do_ensure_engine_version
    SET update_engine_bin=%FLUTTER_ROOT%\bin\internal\update_engine_version.ps1
    REM Escape apostrophes from the executable path
    SET "update_engine_bin=%update_engine_bin:'=''%"
    REM PowerShell command must have exit code set in order to prevent all non-zero exit codes from being translated
    REM into 1. The exit code 2 is used to detect the case where the major version is incorrect and there should be
    REM no subsequent retries.
    %powershell_executable% -ExecutionPolicy Bypass -NoProfile -Command "Unblock-File -Path '%update_engine_bin%'; & '%update_engine_bin%'; exit $LASTEXITCODE;"
    IF "%ERRORLEVEL%" EQU "2" (
      EXIT 1
    )
    IF "%ERRORLEVEL%" NEQ "0" (
      ECHO Error: Unable to determine engine version... 1>&2
      EXIT 1
    )
    REM Do not fall through - return from subroutine
    EXIT /B

  :do_sdk_update_and_snapshot
    SET /A dart_sdk_retries+=1
    ECHO Checking Dart SDK version... 1>&2
    SET update_dart_bin=%FLUTTER_ROOT%\bin\internal\update_dart_sdk.ps1
    REM Escape apostrophes from the executable path
    SET "update_dart_bin=%update_dart_bin:'=''%"
    REM PowerShell command must have exit code set in order to prevent all non-zero exit codes from being translated
    REM into 1. The exit code 2 is used to detect the case where the major version is incorrect and there should be
    REM no subsequent retries.
    ECHO Downloading Dart SDK from Flutter engine %dart_required_version%... 1>&2
    %powershell_executable% -ExecutionPolicy Bypass -NoProfile -Command "Unblock-File -Path '%update_dart_bin%'; & '%update_dart_bin%'; exit $LASTEXITCODE;"
    IF "%ERRORLEVEL%" EQU "2" (
      EXIT 1
    )
    SET max_dart_sdk_retries=3
    IF "%ERRORLEVEL%" NEQ "0" (
      IF "%dart_sdk_retries%" EQU "%max_dart_sdk_retries%" (
        ECHO Error: Unable to update Dart SDK after %max_dart_sdk_retries% retries. 1>&2
        DEL "%engine_stamp%"
        EXIT 1
      )
      ECHO Error: Unable to update Dart SDK. Retrying... 1>&2
      timeout /t 5 /nobreak
      GOTO :do_sdk_update_and_snapshot
    )

  :do_snapshot
    IF EXIST "%FLUTTER_ROOT%\version" DEL "%FLUTTER_ROOT%\version"
    IF EXIST "%FLUTTER_ROOT%\bin\cache\flutter.version.json" DEL "%FLUTTER_ROOT%\bin\cache\flutter.version.json"
    ECHO: > "%cache_dir%\.dartignore"

    ECHO Building flutter tool... 1>&2
    PUSHD "%flutter_tools_dir%"

    REM Makes changes to PUB_ENVIRONMENT only visible to commands within SETLOCAL/ENDLOCAL
    SETLOCAL
      IF "%CI%" == "true" GOTO on_bot
      IF "%BOT%" == "true" GOTO on_bot
      IF "%CONTINUOUS_INTEGRATION%" == "true" GOTO on_bot
      IF "%CHROME_HEADLESS%" == "1" GOTO on_bot
      GOTO not_on_bot
      :on_bot
        SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_bot
      :not_on_bot
      SET PUB_SUMMARY_ONLY=1
      SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_install
      IF "%PUB_CACHE%" == "" (
        IF EXIST "%pub_cache_path%" SET PUB_CACHE=%pub_cache_path%
      )

      SET /A total_tries=10
      SET /A remaining_tries=%total_tries%-1
      :retry_pub_upgrade
        ECHO Running pub upgrade... 1>&2
        "%dart%" pub upgrade --suppress-analytics
        IF "%ERRORLEVEL%" EQU "0" goto :upgrade_succeeded
        ECHO Error (%ERRORLEVEL%): Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (%remaining_tries% tries left) 1>&2
        timeout /t 5 /nobreak 2>NUL
        SET /A remaining_tries-=1
        IF "%remaining_tries%" EQU "0" GOTO upgrade_retries_exhausted
        GOTO :retry_pub_upgrade
      :upgrade_retries_exhausted
        SET exit_code=%ERRORLEVEL%
        ECHO Error: 'pub upgrade' still failing after %total_tries% tries. 1>&2
        GOTO final_exit
      :upgrade_succeeded
        REM Ensure that pubspec.lock has a >= MTIME to pubspec.yaml at this point
        REM https://github.com/flutter/flutter/issues/171024
        SET "PUBSPEC_LOCK_FILE=%FLUTTER_TOOLS_DIR%\pubspec.lock"
        COPY /B "%PUBSPEC_LOCK_FILE%"+,, "%PUBSPEC_LOCK_FILE%" >NUL

    ENDLOCAL

    POPD

    REM Move the old snapshot - we can't just overwrite it as the VM might currently have it
    REM memory mapped (e.g. on flutter upgrade), and deleting it might not work if the file
    REM is in use. For downloading a new dart sdk the folder is moved, so we take the same
    REM approach of moving the file here.
    SET /A snapshot_path_suffix=1
    :move_old_snapshot
      IF EXIST "%snapshot_path_old%%snapshot_path_suffix%" (
        SET /A snapshot_path_suffix+=1
        GOTO move_old_snapshot
      ) ELSE (
        IF EXIST "%snapshot_path%" (
          MOVE "%snapshot_path%" "%snapshot_path_old%%snapshot_path_suffix%" 2> NUL > NUL
        )
      )

    IF "%FLUTTER_TOOL_ARGS%" == "" (
      "%dart%" --verbosity=error --snapshot="%snapshot_path%" --snapshot-kind="app-jit" --packages="%flutter_tools_dir%\.dart_tool\package_config.json" --no-enable-mirrors "%script_path%" > NUL
    ) else (
      "%dart%" "%FLUTTER_TOOL_ARGS%" --verbosity=error --snapshot="%snapshot_path%" --snapshot-kind="app-jit" --packages="%flutter_tools_dir%\.dart_tool\package_config.json" "%script_path%" > NUL
    )
    IF "%ERRORLEVEL%" NEQ "0" (
      ECHO Error: Unable to create dart snapshot for flutter tool. 1>&2
      SET exit_code=%ERRORLEVEL%
      GOTO :final_exit
    )
    >"%stamp_path%" ECHO %compilekey%

    REM Try to delete any old snapshots now. Swallow any errors though.
    DEL "%snapshot_path%.old*" 2> NUL > NUL

  REM Exit Subroutine
  EXIT /B

:after_subroutine

:final_exit
  EXIT /B %exit_code%
