-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjvs.bat
More file actions
215 lines (174 loc) · 4.48 KB
/
jvs.bat
File metadata and controls
215 lines (174 loc) · 4.48 KB
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
:: Name: java version switcher (jvs.bat)
:: Purpose: Switches between java and maven versions for cmd sessions.
:: Author: Can Kurt
:: GitHub: https://github.com/cccaaannn
@echo off
cls
set "v_JAVA_VERSION="
set "v_M2_VERSION="
set "v_SET_MAVEN_FLAG=0"
:: --- Argument parsing ---
IF "%1" == "" (
goto :no-java-version-provided-error
)
IF "%1" == "-h" (
goto :help
)
IF "%1" == "--help" (
goto :help
)
IF "%1" == "-a" (
goto :about
)
IF "%1" == "--about" (
goto :about
)
IF "%1" == "-m" (
goto :only-maven-version-provided-error
)
IF "%1" == "--maven" (
goto :only-maven-version-provided-error
)
IF "%2" == "-m" (
IF not "%3" == "" (
set v_SET_MAVEN_FLAG=1
)
)
IF "%2" == "--maven" (
IF not "%3" == "" (
set v_SET_MAVEN_FLAG=1
)
)
:: --- Set java version ---
goto :set-java-home
:set-java-home-return
:: --- Set maven version ---
IF "%v_SET_MAVEN_FLAG%"=="1" (
goto :set-maven-home
)
:set-maven-home-return
goto :success
goto :EOF
:: --- Functions ---
:: Success condition
:success
TITLE CMD jvs (JAVA %v_JAVA_VERSION%)
color
echo Java version switched by
echo _
echo (_)_ _____
echo ^| \ \ / / __^|
echo ^| ^|\ V /\__ \
echo _/ ^| \_/ ^|___/
echo ^|__/
echo:
:: Start the new terminal with new java version
IF "%v_SET_MAVEN_FLAG%"=="1" (
cmd /k mvn --version
) else (
cmd /k java -version
)
goto :EOF
:: Set java version
:set-java-home
set v_JAVA_VERSION=%1
:: Set NEW_JAVA_HOME variable
set v_NEW_JAVA_HOME=JAVA_HOME_%v_JAVA_VERSION%
:: Set nested env variable back to itself
call set "v_NEW_JAVA_HOME=%%%v_NEW_JAVA_HOME%%%"
:: If environment not exits return error.
IF "%v_NEW_JAVA_HOME%"=="" (
goto :invalid-java-version-provided-error
)
:: If java version exists proceed
:: Set new JAVA_HOME
set "JAVA_HOME=%v_NEW_JAVA_HOME%"
set "Path=%v_NEW_JAVA_HOME%\bin;%Path%"
goto :set-java-home-return
:: Set maven version
:set-maven-home
set v_M2_VERSION=%3
:: Set NEW_M2_HOME variable
set v_NEW_M2_HOME=M2_HOME_%v_M2_VERSION%
:: Set nested env variable back to itself
call set "v_NEW_M2_HOME=%%%v_NEW_M2_HOME%%%"
:: If environment not exits return error.
IF "%v_NEW_M2_HOME%"=="" (
goto :invalid-maven-version-provided-error
)
:: If maven version exists proceed
:: Set new M2_HOME
set "M2_HOME=%v_NEW_M2_HOME%"
set "Path=%v_NEW_M2_HOME%\bin;%Path%"
goto :set-maven-home-return
:: Help menu
:help
TITLE jvs help
color
echo --- Java Version Switcher ---
echo Switches between java and maven versions for cmd sessions.
echo:
echo - Script setup
echo 1- In addition to regular JAVA_HOME environment variable, different java versions has to be set as environment variables in order to script to work.
echo 2- Environment variable naming should follow this standard "JAVA_HOME_<VERSION>". Ex: JAVA_HOME_18
echo 3- Using same naming standard, more M2_HOME variables can also be set for maven version switching "M2_HOME_<VERSION>". Ex: M2_HOME_3.6
echo:
echo - Commands
echo -h, --help Prints help message.
echo -a, --about Shows about jvs.
echo -m ^<MAVEN_VERSION^>, --maven ^<MAVEN_VERSION^>
echo Used for switching maven version.
echo:
echo - Usage
echo jvs ^<JAVA_VERSION^>
echo jvs ^<JAVA_VERSION^> -m ^<MAVEN_VERSION^>
echo:
echo - Examples
echo jvs 11
echo jvs 1.8 -m 3.6
echo jvs 18 --maven 3.8
goto :EOF
:: About menu
:about
TITLE jvs about
color
echo Java Version Switcher
echo _
echo (_)_ _____
echo ^| \ \ / / __^|
echo ^| ^|\ V /\__ \
echo _/ ^| \_/ ^|___/
echo ^|__/
echo:
echo By: Can Kurt
echo https://github.com/cccaaannn
goto :EOF
:: Error functions
:invalid-java-version-provided-error
TITLE jvs ERROR
color 04
echo ERROR
echo Provied java version "%v_JAVA_VERSION%" is not set as an environment variable, it must be set as "JAVA_HOME_%v_JAVA_VERSION%".
echo Java version is not changed.
echo For more info run "jvs -h".
goto :EOF
:invalid-maven-version-provided-error
TITLE jvs ERROR
color 04
echo ERROR
echo Provied maven version "%v_M2_VERSION%" is not set as an environment variable, it must be set as "M2_HOME_%v_M2_VERSION%".
echo Java version is not changed.
echo For more info run "jvs -h".
goto :EOF
:only-maven-version-provided-error
TITLE jvs ERROR
color 04
echo ERROR
echo You must provide a java version.
echo For more info run "jvs -h".
goto :EOF
:no-java-version-provided-error
TITLE jvs ERROR
color 04
cmd /k echo ERROR ^&^& echo No java version provided. ^&^& echo For more info run "jvs -h".
goto :EOF