-
Notifications
You must be signed in to change notification settings - Fork 10
/
Windows_launch.bat
116 lines (92 loc) · 4.42 KB
/
Windows_launch.bat
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
114
115
116
@echo off
@setlocal
rem Get the full path of the script
set "SCRIPT_PATH=%~dp0"
rem Remove the trailing backslash (if any)
if "%SCRIPT_PATH:~-1%"=="\" set "SCRIPT_PATH=%SCRIPT_PATH:~0,-1%"
rem Set the BASEDIR variable
set "BASEDIR=%SCRIPT_PATH%"
rem Temporary disable echo for cleaner output
@REM echo BASEDIR is %BASEDIR%
set WSL_UTF8=1
setlocal enabledelayedexpansion
set defaultdist=none
set /A isubuntu=0
set /A defaultubuntu=0
if not exist "C:\Program Files\Docker\Docker\Docker Desktop.exe" (
:: Download Docker Desktop
bitsadmin.exe /transfer "DownloadDocker" "https://desktop.docker.com/win/main/amd64/136059/Docker Desktop Installer.exe" "%temp%\DockerDesktopInstaller.exe"
:: Install it
powershell -Command Start-Process "%temp%\DockerDesktopInstaller.exe" -Wait install
:: Ask the user to restart its computer
echo
echo ------------------------------------------------------------------------------------
echo Docker Desktop installation completed!
echo To ensure that all the changes are properly applied, please restart your computer.
echo Then click the Windows_launcher.
echo ------------------------------------------------------------------------------------
pause
exit
)
:: Check if WSL is installed
for /f "tokens=* USEBACKQ skip=1" %%g in (`wsl --status`) do (set wslworking=%%g)
:: In case is not installed, install it
if ["%wslworking%"]==[""] (
wsl --install Ubuntu
:: Ask the user to restart its computer
echo
echo ------------------------------------------------------------------------------------
echo Ubuntu in WSL installation completed!
echo To ensure that all the changes are properly applied, please restart your computer.
echo Then click the Windows_launcher.
echo ------------------------------------------------------------------------------------
pause
exit
)
:: Go trough all the WSL distributions in your computer
for /f "tokens=* USEBACKQ skip=1" %%F in (`wsl --list`) do (
:: Get distribution name
set "dist=%%F"
:: Remove the word last parentheses in that name (that will be the default distribution)
set "withoutparentheses=!dist:)=!"
:: Check if the distrubution name contained paretheses (if so it is the default distribuition)
if not !dist!==!withoutparentheses! set defaultdist=!dist!
:: Remove the word Ubuntu in default distribution
set "defaultubuntuless=!defaultdist:Ubuntu=!"
:: Check if the default distrubution name contained Ubuntu
if not !defaultdist!==!defaultubuntuless! set /A defaultubuntu=1
:: Remove the word Ubuntu in the distribution name
set "ubuntuless=!dist:Ubuntu=!"
:: Check if the distrubution name contained Ubuntu
if not !dist!==!ubuntuless! set /A isubuntu=1
)
:: First check if Ubuntu is installed
if %isubuntu%==0 (
:: If it is not installed, install Ubuntu
wsl --install Ubuntu
wsl --set-default Ubuntu
:: Ask the user to restart its computer
echo
echo ------------------------------------------------------------------------------------
echo Ubuntu in WSL installation completed!
echo To ensure that all the changes are properly applied, please restart your computer.
echo Then click the Windows_launcher.
echo ------------------------------------------------------------------------------------
pause
exit
) else (
:: If it is intalled, check if it is the default distribution
if %defaultubuntu%==0 (
:: If not, set as the default one
wsl --set-default Ubuntu
)
)
rem At this point Ubuntu is installed and set as the default distribution, run the Linux_launch.sh inside the WSL
cd /d "%BASEDIR%"
:: It might happen that by downloading it through 'git clone', the format of the files is on DOS/Windows.
:: We need it in a Unix/Linux format, that is why we need to install dos2unix if needed and use it.
wsl -d Ubuntu if command -v dos2unix -h 2>nul; then echo "dos2unix already installed."; else echo "Installing dos2unix..."; apt-get -y update; apt-get -y install dos2unix; fi
:: Check if for example Linux_launch.sh is on DOS format, and if so use dos2unix to convert it
wsl -d Ubuntu if [[ -n $(dos2unix --info=c "Linux_launch.sh") ]] ; then echo "Converting your files to Linux format..."; find . -type f -exec dos2unix -q '{}' '+'; fi
:: At this point Ubuntu is installed and as the default distribution, run the launch.sh inside the WSL
wsl -d Ubuntu bash -E Linux_launch.sh