Skip to content

Commit

Permalink
[Windows] Add a flutter-dev script to run the flutter CLI from sour…
Browse files Browse the repository at this point in the history
…ce (flutter#153892)

Follow-up to flutter#153599, adds support for the objectively better OS �
  • Loading branch information
loic-sharma authored Aug 22, 2024
1 parent 5fad2be commit 56fcc72
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 4 deletions.
4 changes: 2 additions & 2 deletions bin/flutter
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
# ---------------------------------- NOTE ---------------------------------- #
#
# Please keep the logic in this file consistent with the logic in the
# `flutter.bat` script in the same directory to ensure that Flutter continues
# to work across all platforms!
# `flutter.bat` script in the same directory to ensure that Flutter
# continues to work across all platforms!
#
# -------------------------------------------------------------------------- #

Expand Down
14 changes: 14 additions & 0 deletions bin/flutter-dev
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# ---------------------------------- NOTE ---------------------------------- #
#
# Please keep the logic in this file consistent with the logic in the
# `flutter-dev.bat` script in the same directory to ensure that Flutter
# continues to work across all platforms!
#
# -------------------------------------------------------------------------- #

set -e

# This is a helper script for development purposes. It runs the Flutter tool
Expand Down Expand Up @@ -50,6 +58,12 @@ PROG_NAME="$(follow_links "${BASH_SOURCE[0]}")"
BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
SHARED_NAME="$BIN_DIR/internal/shared.sh"
FLUTTER_ROOT="$(cd "$BIN_DIR/.." ; pwd -P)"
OS="$(uname -s)"

# If we're on Windows, invoke the batch script instead to get proper locking.
if [[ $OS =~ MINGW.* || $OS =~ CYGWIN.* || $OS =~ MSYS.* ]]; then
exec "${BIN_DIR}/flutter-dev.bat" "$@"
fi

# To define `shared::execute()` function
source "$SHARED_NAME"
Expand Down
60 changes: 60 additions & 0 deletions bin/flutter-dev.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
@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 `flutter-dev` script in the same directory to ensure that Flutter & Dart
REM continue to work across all platforms!
REM
REM --------------------------------------------------------------------------

SETLOCAL

REM This is a helper script for development purposes. It runs the Flutter tool
REM from source code directly, without using the prebuilt snapshot. This is
REM useful for development, as it allows you to make changes to the tool and see
REM the effects immediately, but is much slower than using the prebuilt snapshot.

REM To debug the tool, you can uncomment the following line to enable debug mode:
REM SET FLUTTER_TOOL_ARGS="--enable-asserts %FLUTTER_TOOL_ARGS%"

FOR %%i IN ("%~dp0..") DO SET FLUTTER_ROOT=%%~fi

REM If available, add location of bundled mingit to PATH
SET mingit_path=%FLUTTER_ROOT%\bin\mingit\cmd
IF EXIST "%mingit_path%" SET PATH=%PATH%;%mingit_path%

REM We test if Git is available on the Host as we run git in shared.bat
REM Test if the flutter directory is a git clone, otherwise git rev-parse HEAD would fail
IF NOT EXIST "%flutter_root%\.git" (
ECHO Error: The Flutter directory is not a clone of the GitHub project.
ECHO The flutter tool requires Git in order to operate properly;
ECHO to set up Flutter, run the following command:
ECHO git clone -b stable https://github.com/flutter/flutter.git
EXIT 1
)

REM Include shared scripts in shared.bat
SET shared_bin=%FLUTTER_ROOT%\bin\internal\shared.bat
CALL "%shared_bin%"

SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools
SET cache_dir=%FLUTTER_ROOT%\bin\cache
SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart
SET dart_sdk_path=%cache_dir%\dart-sdk
SET dart=%dart_sdk_path%\bin\dart.exe

SET exit_with_errorlevel=%FLUTTER_ROOT%/bin/internal/exit_with_errorlevel.bat

REM Chaining the call to 'dart' and 'exit' with an ampersand ensures that
REM Windows reads both commands into memory once before executing them. This
REM avoids nasty errors that may otherwise occur when the dart command (e.g. as
REM part of 'flutter upgrade') modifies this batch script while it is executing.
REM
REM Do not use the CALL command in the next line to execute Dart. CALL causes
REM Windows to re-read the line from disk after the CALL command has finished
REM regardless of the ampersand chain.
"%dart%" run --resident --packages="%flutter_tools_dir%\.dart_tool\package_config.json" %FLUTTER_TOOL_ARGS% "%script_path%" %* & "%exit_with_errorlevel%"
4 changes: 2 additions & 2 deletions bin/flutter.bat
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ REM found in the LICENSE file.
REM ---------------------------------- NOTE ----------------------------------
REM
REM Please keep the logic in this file consistent with the logic in the
REM `flutter` script in the same directory to ensure that Flutter & Dart continue to
REM work across all platforms!
REM `flutter` script in the same directory to ensure that Flutter & Dart
REM continue to work across all platforms!
REM
REM --------------------------------------------------------------------------

Expand Down

0 comments on commit 56fcc72

Please sign in to comment.