From 9c77f52cd1b3b2da3c78f98a6e8f68b7c82438ac Mon Sep 17 00:00:00 2001 From: Glenn Condron Date: Wed, 16 Apr 2014 21:51:54 -0700 Subject: [PATCH] replace batch files with kvm --- GetRuntime.cmd | 18 ----- K.cmd | 30 -------- kvm.cmd | 187 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 187 insertions(+), 48 deletions(-) delete mode 100644 GetRuntime.cmd delete mode 100644 K.cmd create mode 100644 kvm.cmd diff --git a/GetRuntime.cmd b/GetRuntime.cmd deleted file mode 100644 index 85ce4b9abc5c..000000000000 --- a/GetRuntime.cmd +++ /dev/null @@ -1,18 +0,0 @@ -@echo off -cd %~dp0 - -SETLOCAL -SET CACHED_NUGET=%LocalAppData%\NuGet\NuGet.exe - -IF EXIST %CACHED_NUGET% goto copynuget -echo Downloading latest version of NuGet.exe... -IF NOT EXIST %LocalAppData%\NuGet md %LocalAppData%\NuGet -@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest 'https://www.nuget.org/nuget.exe' -OutFile '%CACHED_NUGET%'" - -:copynuget -IF EXIST .nuget\nuget.exe goto restore -md .nuget -copy %CACHED_NUGET% .nuget\nuget.exe > nul - -:restore -.nuget\NuGet.exe install ProjectK -o packages -nocache -pre diff --git a/K.cmd b/K.cmd deleted file mode 100644 index b50ffdf586b1..000000000000 --- a/K.cmd +++ /dev/null @@ -1,30 +0,0 @@ -@ECHO OFF - -SETLOCAL ENABLEDELAYEDEXPANSION - -SET CURRDIR=%CD% -SET PARENTDIR=!CURRDIR! - -:START -IF EXIST !CURRDIR!\packages\ProjectK* FOR /F %%I IN ('DIR !CURRDIR!\packages\ProjectK* /B /O:-D') DO (SET ProjectKDir=%%I& GOTO :ENDFOR) -:ENDFOR - -SET LocalKCmd=!CURRDIR!\packages\!ProjectKDir!\tools\k.cmd - -IF NOT EXIST !LocalKCmd! ( - CALL :RESOLVE !CURRDIR!\.. PARENTDIR - IF !CURRDIR!=="!PARENTDIR!" ( - ECHO Unable to locate the ProjectK runtime - ENDLOCAL & EXIT /b 1 - ) ELSE ( - SET CURRDIR="!PARENTDIR!" - GOTO :START - ) -) - -CALL !LocalKCmd! %* -ENDLOCAL & EXIT /b %ERRORLEVEL% - -:RESOLVE -SET %2=%~f1 -GOTO :EOF diff --git a/kvm.cmd b/kvm.cmd new file mode 100644 index 000000000000..3f68bd86de57 --- /dev/null +++ b/kvm.cmd @@ -0,0 +1,187 @@ +@ECHO OFF +IF "%1"=="" ( + CALL :cmd_help +) ELSE ( + CALL :cmd_%1 %* + IF ERRORLEVEL 1 CALL:cmd_help +) +GOTO:EOF + + +:cmd_setup +SET "_KVM_PATH=%USERPROFILE%\.k\" +SET "_TEMP_PATH=%PATH%" + +IF /I NOT "%~dp0"=="%_KVM_PATH%" ( + IF NOT EXIST "%_KVM_PATH%" MKDIR "%_KVM_PATH%" + COPY "%~f0" "%_KVM_PATH%kvm.cmd" +) + +:PARSE_START +@IF "%_TEMP_PATH%"=="" GOTO PARSE_END +@FOR /F "tokens=1* delims=;" %%a in ("%_TEMP_PATH%") Do @IF "%%a"=="%_KVM_PATH%" GOTO:end_setup +@FOR /F "tokens=1* delims=;" %%a in ("%_TEMP_PATH%") Do @SET _TEMP_PATH=%%b +@GOTO PARSE_START +:PARSE_END + +SET "PATH=%PATH%;%_KVM_PATH%" +powershell -NoProfile -ExecutionPolicy unrestricted -Command "[Environment]::SetEnvironmentVariable('PATH',[Environment]::GetEnvironmentVariable('PATH','user')+';%_KVM_PATH%','user');" + + +:end_setup +CALL "%_KVM_PATH%kvm.cmd" upgrade +@ECHO Running crossgen, see crossgen.log for results +CALL "%_KVM_PATH%k.cmd" crossgen --in %_KVM_PATH%packages\ProjectK.%_KVM_VERSION%\tools\k10 >crossgen.log 2>crossgen.err.log +SET _KVM_PATH= +SET _TEMP_PATH= +GOTO:EOF + + +:cmd_upgrade +CALL:cmd_install install +CALL:cmd_alias alias default %_KVM_VERSION% +GOTO:EOF + + +:cmd_install +IF NOT EXIST "%~dp0.nuget\NuGet.exe" ( + IF NOT EXIST "%~dp0.nuget" MKDIR "%~dp0.nuget" + ECHO Downloading latest version of NuGet.exe... + @powershell -NoProfile -ExecutionPolicy unrestricted -Command "((new-object net.webclient).DownloadFile('https://nuget.org/nuget.exe', '%~dp0.nuget\NuGet.exe'))" +) + +IF NOT EXIST "%~dp0.nuget\NuGet.config" ( +echo ^ >"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +echo ^ >>"%~dp0.nuget\NuGet.config" +) + +IF "%2"=="" ( + echo Finding latest version + FOR /f "tokens=1,2" %%G in ('"%~dp0.nuget\NuGet.exe" list ProjectK -Prerelease -ConfigFile %~dp0.nuget\NuGet.config') DO ( + IF "%%G"=="ProjectK" ( + SET _KVM_VERSION=%%H + ) + ) +) ELSE ( + SET "_KVM_VERSION=%2" +) + +ECHO Downloading version %_KVM_VERSION% +"%~dp0.nuget\NuGet.exe" install ProjectK -Version %_KVM_VERSION% -OutputDirectory "%~dp0packages" -ConfigFile "%~dp0.nuget\NuGet.config" + +CALL:cmd_use use %_KVM_VERSION% +GOTO:EOF + + +:cmd_use +IF NOT EXIST "%~dp0k.cmd" ( + ECHO @CALL %%~dp0kvm.cmd k %%* >%~dp0k.cmd +) +IF EXIST "%~dp0alias\%2.txt" ( + FOR /F %%G IN (%~dp0alias\%2.txt) DO ( + ECHO Setting _KVM_VERSION to '%%G' + SET "_KVM_VERSION=%%G" + ) +) ELSE ( + IF NOT EXIST "%~dp0packages\ProjectK.%2\tools\k.cmd" ( + ECHO Version '%2' not found. + ECHO You may need to run 'kvm install %2' + GOTO:EOF + ) + ECHO Setting _KVM_VERSION to '%2' + SET "_KVM_VERSION=%2" +) +GOTO:EOF + + +:cmd_alias +IF NOT EXIST "%~dp0alias" ( + MKDIR "%~dp0alias" +) +IF "%3"=="" ( + IF "%2"=="" ( + DIR "%~dp0alias" /b + ) ELSE ( + ECHO Alias '%2' is + TYPE "%~dp0alias\%2.txt" + ) +) ELSE ( + IF NOT EXIST "%~dp0packages\ProjectK.%3\tools\k.cmd" ( + ECHO Version '%3' not found. + ECHO You may need to run 'kvm install %3' + GOTO:EOF + ) + + ECHO Setting alias '%2' to '%3' + ECHO %3>%~dp0alias\%2.txt +) +GOTO:EOF + + +:cmd_list +dir /b "%~dp0packages\ProjectK*" +GOTO:EOF + + +:cmd_k +@REM find k.cmd in local paths + +@REM read _KVM_VERSION.txt if _KVM_VERSION not set +IF "%_KVM_VERSION%" == "" ( + FOR /F %%G IN (%~dp0alias\default.txt) DO ( + SET "_KVM_VERSION=%%G" + ) +) +IF NOT EXIST "%~dp0packages\ProjectK.%_KVM_VERSION%\tools\k.cmd" ( + ECHO Version '%_KVM_VERSION%' not found. + ECHO You may need to run 'kvm install %_KVM_VERSION%' +) ELSE ( + CALL "%~dp0packages\ProjectK.%_KVM_VERSION%\tools\k.cmd" %2 %3 %4 %5 %6 %7 %8 %9 +) +GOTO:EOF + + +:cmd_help +ECHO kvm ^ [args...] +ECHO k version manager +ECHO . +ECHO kvm help +ECHO displays this help +ECHO . +ECHO kvm upgrade +ECHO install latest k version and make it the default +ECHO . +ECHO kvm install ^ +ECHO install and use specific k version +ECHO . +ECHO kvm list +ECHO list installed k versions +ECHO . +ECHO kvm use ^^|^ +ECHO use a version or alias within the current command prompt +ECHO . +ECHO kvm alias ^ ^ +ECHO create alias to a specific version +ECHO alias names may be passed to 'kvm use ^' +ECHO the alias 'default' determines the default k version +ECHO when kvm use is not called +ECHO . +ECHO kvm alias ^ +ECHO show the version of an alias +ECHO . +ECHO kvm alias +ECHO list aliases +ECHO . + +GOTO:EOF + +