Last active
October 3, 2021 06:48
-
-
Save yeoupooh/90b4b6a8964f067a8e1317dbfc3a629f to your computer and use it in GitHub Desktop.
Simple Flutter environment changer script inspired by FVM (https://fvm.app/). DISCLAIMER: This is only for my own environment. You can use/modify this what whatever you want but at your own risk.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@echo off | |
@setlocal | |
@REM Uncomment to debug | |
@REM SET _EXEC=echo | |
@REM Check permission | |
net session >nul 2>&1 | |
if %errorLevel% neq 0 ( | |
echo ERROR: This script should be run by Administrators. | |
goto :end | |
) | |
@REM Command parameters | |
set FENV_CMD=%1 | |
set FENV_VERSION=%2 | |
@REM Internal variables | |
@REM Change FENV_BASE_DIR variable as you want | |
set FENV_BASE_DIR=d:\Apps\fenv | |
set FENV_CURR_DIR=%FENV_BASE_DIR%\current | |
set FENV_VERSIONS_DIR=%FENV_BASE_DIR%\versions | |
set FENV_SELECTED_DIR=%FENV_VERSIONS_DIR%\%FENV_VERSION% | |
@REM Check parameters are valid | |
if "%FENV_CMD%"=="" ( | |
goto :help | |
) | |
if "%FENV_CMD%"=="list" ( | |
dir %FENV_SELECTED_DIR% /b | |
goto :end | |
) | |
if "%FENV_CMD%"=="releases" ( | |
pushd %FENV_CURR_DIR% | |
git fetch --all --tags | |
git tag -l | |
popd | |
goto :end | |
) | |
if "%FENV_CMD%"=="install" ( | |
if "%FENV_VERSION%"=="" ( | |
echo ERROR: Version should be set. | |
goto :end | |
) | |
if exist %FENV_SELECTED_DIR% ( | |
echo ERROR: Flutter %FENV_VERSION% is already installed. | |
goto :end | |
) | |
%_EXEC% pushd %FENV_VERSIONS_DIR% | |
echo INFO: Installing Flutter %FENV_VERSION%... | |
%_EXEC% git clone https://github.com/flutter/flutter.git %FENV_VERSION% | |
%_EXEC% cd %FENV_VERSION% | |
%_EXEC% git fetch --all --tags | |
%_EXEC% git checkout tags/%FENV_VERSION% -b %FENV_VERSION% | |
%_EXEC% popd | |
echo INFO: Flutter %FENV_VERSION% is installed. | |
goto :end | |
) | |
if "%FENV_CMD%"=="uninstall" ( | |
if "%FENV_VERSION%"=="" ( | |
echo ERROR: Version should be set. | |
goto :end | |
) | |
if not exist %FENV_SELECTED_DIR% ( | |
echo ERROR: Flutter %FENV_VERSION% is not installed. | |
goto :end | |
) | |
echo INFO: Deleting Flutter %FENV_VERSION%... | |
%_EXEC% rd /s/q %FENV_SELECTED_DIR% | |
echo INFO: Flutter %FENV_VERSION% is uninstalled. | |
goto :end | |
) | |
if "%FENV_CMD%"=="use" ( | |
if "%FENV_VERSION%"=="" ( | |
echo ERROR: Version should be set. | |
goto :end | |
) | |
if not exist %FENV_SELECTED_DIR% ( | |
echo ERROR: Flutter %FENV_VERSION% is not installed. | |
goto :end | |
) | |
if exist %FENV_CURR_DIR% ( | |
%_EXEC% rmdir %FENV_CURR_DIR% | |
) | |
%_EXEC% mklink /d %FENV_CURR_DIR% %FENV_SELECTED_DIR% | |
echo INFO: Now Flutter %FENV_VERSION% is used. | |
goto :end | |
) | |
echo ERROR: Unknown command: %FENV_CMD% | |
echo. | |
:help | |
echo %0 ^<command^> [version] | |
echo. | |
echo commands: | |
echo list List installed Flutter versions locally. | |
echo releases List released Flutter on public. | |
echo use ^<version^> Change a Flutter version to use. Before 'use', the version should be installed. | |
echo install ^<version^> Install given Flutter version. | |
echo uninstall ^<version^> Uninstall given Flutter version. | |
:end | |
@endlocal |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment