-
Notifications
You must be signed in to change notification settings - Fork 0
/
.prerequisites.cmd
102 lines (78 loc) · 2.71 KB
/
.prerequisites.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
@echo off
set DOT_PREREQUISITES_CHECK=7z nuget git jq curl gitversion "C:\Program Files\dotnet\sdk" dotnet npm standard-version
set DOT_PREREQUISITES_CHOCO=7zip.install nuget.commandline git.install jq curl gitversion.portable dotnetcore-sdk dotnetcore nodejs-lts
set DOT_PREREQUISITES_NPM=standard-version
set DOT_POWERSHELL_CMD="%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoLogo -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command
if "%~1" neq "check" goto :start
call :check_prerequisites
exit /b %ERRORLEVEL%
:start
call :elevate_privileges
if %ERRORLEVEL% equ 1 exit /b
title Installing prerequisites...
:: call :synch_time
call :install_choco
call :install_npm
call :choco_prerequisites
call :npm_prerequisites
title
goto :eof
:npm_prerequisites
:: Avoid certificate problems
npm config set strict-ssl false
call :npm_install "standard-version"
npm config set strict-ssl true
goto :eof
:npm_install
call npm -g install %~1
set EXITCODE=%ERRORLEVEL%
if %EXITCODE% neq 0 pause&exit %EXITCODE%
goto :eof
:check_prerequisites
set DOT_PREREQUISITE_IS_MISSING=0
for %%p in (%DOT_PREREQUISITES_CHECK%) do call :check_prerequisite %%p
exit /b %DOT_PREREQUISITE_IS_MISSING%
:choco_prerequisites
choco install %DOT_PREREQUISITES_CHOCO%
call RefreshEnv
goto :eof
:install_choco
echo Finding choco...
where choco 1>nul 2>nul
if %ERRORLEVEL% equ 0 goto :configure
%DOT_POWERSHELL_CMD% "Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
set "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
call RefreshEnv
:configure
choco feature enable -n allowGlobalConfirmation > nul
choco feature enable -n exitOnRebootDetected > nul
goto :eof
:install_npm
echo Finding npm...
where npm 1>nul 2>nul
if %ERRORLEVEL% equ 0 goto :eof
echo Nodejs not found. Installing...
choco install nodejs --force
goto :eof
:choco_install_prerequisite
choco install %~1
set EXITCODE=%ERRORLEVEL%
if %EXITCODE% neq 0 pause&exit %EXITCODE%
goto :eof
:check_prerequisite
if exist "%~1" goto :eof
where %~1 >nul 2>nul
if %ERRORLEVEL% neq 0 set DOT_PREREQUISITE_IS_MISSING=1&echo %~1 is missing
goto :eof
:synch_time
echo Synchronizing system time...
w32tm /resync 2>nul
if %ERRORLEVEL% neq 0 echo Make sure your system time is synchronized. Some packages may not install if the system time is out of sync.
goto :eof
:elevate_privileges
setlocal enableextensions
cd /d "%~dp0"
net session 2> nul 1> nul
if %ERRORLEVEL% equ 0 goto :eof
%DOT_POWERSHELL_CMD% "Start-Process -Wait -FilePath 'cmd.exe' -ArgumentList '/c \"%~dp0%~nx0\"' -Verb runAs"
exit /b 1