forked from faniereynders/dotnet-sdk-helpers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdotnet-sdk.cmd
113 lines (92 loc) · 3.33 KB
/
dotnet-sdk.cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
@echo off
SET dotnet_releases_url=https://raw.githubusercontent.com/dotnet/core/master/release-notes/releases.json
SET script_path=%~dp0
SET tools_path=%script_path%tools
if [%1]==[help] goto help
if [%1]==[] goto help
if [%1]==[list] goto sdk_list
if [%1]==[latest] goto sdk_latest
if [%1]==[releases] goto sdk_releases
if [%1]==[get] goto sdk_download
for /f %%f in ('dir /b "%programfiles%\dotnet\sdk"') do (
if %1==%%f goto switch
)
echo The %1 version of .Net Core SDK was not found
echo Please, run "dotnet sdk list" to make sure you have it installed in "%programfiles%\dotnet\sdk"
goto end
:switch
echo Switching .NET Core SDK version to %1
(
echo {
echo "sdk": {
echo "version": "%1"
echo }
echo }
) > global.json
goto end
:sdk_list
echo The installed .NET Core SDKs are:
dir /b "%programfiles%\dotnet\sdk" | findstr /l "."
goto end
:sdk_latest
if exist global.json del global.json
if exist ..\global.json (
set /p choice= There's a global.json in your parent directory. Do you want to delete it? (N/y)
if /I "%choice%"=="y" (
del ..\global.json
) else (
SETLOCAL ENABLEDELAYEDEXPANSION
set dotnetVersion=
for /f "delims=" %%a in ('dotnet --version') do set dotnetVersion=%%a
echo .NET Core SDK current version: !dotnetVersion!
goto end
)
)
echo .NET Core SDK version switched to latest version.
dotnet --version
goto end
:help
echo .NET Core SDK Switcher
echo.
echo Usage: .net sdk [command]
echo Usage: .net sdk [version]
echo Usage: .net sdk get [version] [platform]
echo.
echo Commands:
echo latest Switches to the latest .NET Core SDK version
echo list Lists all installed .NET Core SDKs
echo releases Lists all available releases of .NET Core SDKs
echo get Downloads the provided release version. ('' or 'latest' for the latest release)
echo help Display help
echo.
echo version:
echo An installed version number of a .NET Core SDK
echo.
goto end
:sdk_releases
echo Releases available for the .NET Core SDK are:
"%tools_path%\curl" %dotnet_releases_url% -H "Accept: application/json" -s | "%tools_path%\jq" "map({date: .date,sdk: .\"version-sdk\"}) | unique_by(.sdk) | .[] | \"\(.date)\t\(.sdk)\" " -r
echo.
goto end
:sdk_download
SETLOCAL
SET version=%2
if [%version%]==[] SET version=latest
if "%version%"=="latest" (
"%tools_path%\curl" %dotnet_releases_url% -H "Accept: application/json" -s | "%tools_path%\jq" "map({sdk: .\"version-sdk\"}) | unique_by(.sdk) | .[-1] | .sdk " -r > version.dat
set /p version=<version.dat
)
SET platform=win-x64
if NOT [%3]==[] SET platform=%3
SET platform_id=sdk-%platform%
"%tools_path%\curl" %dotnet_releases_url% -H "Accept: application/json" -s | "%tools_path%\jq" "map({sdk: .\"version-sdk\",url: (.\"blob-sdk\" + (.\"%platform_id%\" | rtrimstr(\".zip\")) + \".exe\" )}) | unique_by(.sdk) | .[] | select(.sdk==\"%version%\") | .url " -r > download.dat
SET /p url=<download.dat
echo Downloading .NET Core SDK version %version% for platform %platform%...
echo %url%
SET exe=.\installs\%version%.exe
powershell -Command "(New-Object Net.WebClient).DownloadFile('%url%', '%exe%')"
echo Download completed. If succeeded the installation will start shortly.
start %exe%
ENDLOCAL
goto end
:end