2
2
# Source this file from your .bash-profile or script to use
3
3
4
4
# "Constants"
5
- _DNVM_BUILDNUMBER=" beta5-10357 "
5
+ _DNVM_BUILDNUMBER=" beta5-10358 "
6
6
_DNVM_AUTHORS=" Microsoft Open Technologies, Inc."
7
7
_DNVM_RUNTIME_PACKAGE_NAME=" dnx"
8
8
_DNVM_RUNTIME_FRIENDLY_NAME=" .NET Execution Environment"
@@ -11,9 +11,26 @@ _DNVM_RUNTIME_FOLDER_NAME=".dnx"
11
11
_DNVM_COMMAND_NAME=" dnvm"
12
12
_DNVM_VERSION_MANAGER_NAME=" .NET Version Manager"
13
13
_DNVM_DEFAULT_FEED=" https://www.myget.org/F/aspnetvnext/api/v2"
14
+ _DNVM_UPDATE_LOCATION=" https://raw.githubusercontent.com/aspnet/Home/dev/dnvm.sh"
14
15
_DNVM_HOME_VAR_NAME=" DNX_HOME"
15
16
16
- [ " $_DNVM_BUILDNUMBER " = " {{*" ] && _DNVM_BUILDNUMBER=" HEAD"
17
+ if [ " $NO_COLOR " != " 1" ]; then
18
+ # ANSI Colors
19
+ RCol=' \e[0m' # Text Reset
20
+
21
+ # Regular Bold Underline High Intensity BoldHigh Intens Background High Intensity Backgrounds
22
+ Bla=' \e[0;30m' ; BBla=' \e[1;30m' ; UBla=' \e[4;30m' ; IBla=' \e[0;90m' ; BIBla=' \e[1;90m' ; On_Bla=' \e[40m' ; On_IBla=' \e[0;100m' ;
23
+ Red=' \e[0;31m' ; BRed=' \e[1;31m' ; URed=' \e[4;31m' ; IRed=' \e[0;91m' ; BIRed=' \e[1;91m' ; On_Red=' \e[41m' ; On_IRed=' \e[0;101m' ;
24
+ Gre=' \e[0;32m' ; BGre=' \e[1;32m' ; UGre=' \e[4;32m' ; IGre=' \e[0;92m' ; BIGre=' \e[1;92m' ; On_Gre=' \e[42m' ; On_IGre=' \e[0;102m' ;
25
+ Yel=' \e[0;33m' ; BYel=' \e[1;33m' ; UYel=' \e[4;33m' ; IYel=' \e[0;93m' ; BIYel=' \e[1;93m' ; On_Yel=' \e[43m' ; On_IYel=' \e[0;103m' ;
26
+ Blu=' \e[0;34m' ; BBlu=' \e[1;34m' ; UBlu=' \e[4;34m' ; IBlu=' \e[0;94m' ; BIBlu=' \e[1;94m' ; On_Blu=' \e[44m' ; On_IBlu=' \e[0;104m' ;
27
+ Pur=' \e[0;35m' ; BPur=' \e[1;35m' ; UPur=' \e[4;35m' ; IPur=' \e[0;95m' ; BIPur=' \e[1;95m' ; On_Pur=' \e[45m' ; On_IPur=' \e[0;105m' ;
28
+ Cya=' \e[0;36m' ; BCya=' \e[1;36m' ; UCya=' \e[4;36m' ; ICya=' \e[0;96m' ; BICya=' \e[1;96m' ; On_Cya=' \e[46m' ; On_ICya=' \e[0;106m' ;
29
+ Whi=' \e[0;37m' ; BWhi=' \e[1;37m' ; UWhi=' \e[4;37m' ; IWhi=' \e[0;97m' ; BIWhi=' \e[1;97m' ; On_Whi=' \e[47m' ; On_IWhi=' \e[0;107m' ;
30
+ fi
31
+
32
+
33
+ [[ " $_DNVM_BUILDNUMBER " = {{* ]] && _DNVM_BUILDNUMBER=" HEAD"
17
34
18
35
__dnvm_has () {
19
36
type " $1 " > /dev/null 2>&1
30
47
31
48
_DNVM_USER_PACKAGES=" $DNX_USER_HOME /runtimes"
32
49
_DNVM_ALIAS_DIR=" $DNX_USER_HOME /alias"
50
+ _DNVM_DNVM_DIR=" $DNX_USER_HOME /dnvm"
33
51
34
52
if [ -z " $DNX_FEED " ]; then
35
53
DNX_FEED=" $_DNVM_DEFAULT_FEED "
@@ -39,7 +57,7 @@ __dnvm_find_latest() {
39
57
local platform=" mono"
40
58
41
59
if ! __dnvm_has " curl" ; then
42
- echo " $ _DNVM_COMMAND_NAME needs curl to proceed." >&2 ;
60
+ printf " %b\n " " ${Red} $ _DNVM_COMMAND_NAME needs curl to proceed. ${RCol} " >&2 ;
43
61
return 1
44
62
fi
45
63
@@ -77,33 +95,57 @@ __dnvm_package_runtime() {
77
95
echo " $runtimeFullName " | sed " s/$_DNVM_RUNTIME_PACKAGE_NAME -\([^.-]*\).*/\1/"
78
96
}
79
97
98
+ __dnvm_update_self () {
99
+ local dnvmFileLocation=" $_DNVM_DNVM_DIR /dnvm.sh"
100
+ if [ ! -e $dnvmFileLocation ]; then
101
+ local formattedDnvmFileLocation=` (echo $dnvmFileLocation | sed s=$HOME =~ =g)`
102
+ local formattedDnvmHome=` (echo $_DNVM_DNVM_DIR | sed s=$HOME =~ =g)`
103
+ printf " %b\n" " ${Red} $formattedDnvmFileLocation doesn't exist. This command assumes you have installed dnvm in the usual location and are trying to update it. If you want to use update-self then dnvm.sh should be sourced from $formattedDnvmHome ${RCol} "
104
+ return 1
105
+ fi
106
+ printf " %b\n" " ${Cya} Downloading dnvm.sh from $_DNVM_UPDATE_LOCATION ${RCol} "
107
+ local httpResult=$( curl -L -D - " $_DNVM_UPDATE_LOCATION " -o " $dnvmFileLocation " -# | grep " ^HTTP/1.1" | head -n 1 | sed " s/HTTP.1.1 \([0-9]*\).*/\1/" )
108
+
109
+ [[ $httpResult == " 404" ]] && printf " %b\n" " ${Red} 404. Unable to download DNVM from $_DNVM_UPDATE_LOCATION ${RCol} " && return 1
110
+ [[ $httpResult != " 302" && $httpResult != " 200" ]] && echo " ${Red} HTTP Error $httpResult fetching DNVM from $_DNVM_UPDATE_LOCATION ${RCol} " && return 1
111
+
112
+ source " $dnvmFileLocation "
113
+ }
114
+
80
115
__dnvm_download () {
81
116
local runtimeFullName=" $1 "
82
117
local runtimeFolder=" $2 "
118
+ local force=" $3 "
83
119
84
120
local pkgName=$( __dnvm_package_name " $runtimeFullName " )
85
121
local pkgVersion=$( __dnvm_package_version " $runtimeFullName " )
86
122
local url=" $DNX_FEED /package/$pkgName /$pkgVersion "
87
123
local runtimeFile=" $runtimeFolder /$runtimeFullName .nupkg"
88
124
125
+ if [ -n " $force " ]; then
126
+ printf " %b\n" " ${Yel} Forcing download by deleting $runtimeFolder directory ${RCol} "
127
+ rm -rf " $runtimeFolder "
128
+ fi
129
+
89
130
if [ -e " $runtimeFolder " ]; then
90
- echo " $runtimeFullName already installed."
131
+ printf " %b\n " " ${Gre} $ runtimeFullName already installed. ${RCol} "
91
132
return 0
92
133
fi
93
-
94
- echo " Downloading $runtimeFullName from $DNX_FEED "
95
-
134
+
96
135
if ! __dnvm_has " curl" ; then
97
- echo " $_DNVM_COMMAND_NAME needs curl to proceed." >&2 ;
136
+ printf " %b\n " " ${Red} $ _DNVM_COMMAND_NAME needs curl to proceed. ${RCol} " >&2 ;
98
137
return 1
99
138
fi
100
139
101
140
mkdir -p " $runtimeFolder " > /dev/null 2>&1
102
141
103
- local httpResult=$( curl -L -D - " $url " -o " $runtimeFile " 2> /dev/null | grep " ^HTTP/1.1" | head -n 1 | sed " s/HTTP.1.1 \([0-9]*\).*/\1/" )
142
+ echo " Downloading $runtimeFullName from $DNX_FEED "
143
+ echo " Download: $url "
144
+
145
+ local httpResult=$( curl -L -D - " $url " -o " $runtimeFile " -# | grep " ^HTTP/1.1" | head -n 1 | sed " s/HTTP.1.1 \([0-9]*\).*/\1/" )
104
146
105
- [[ $httpResult == " 404" ]] && echo " $runtimeFullName was not found in repository $DNX_FEED " && return 1
106
- [[ $httpResult != " 302" && $httpResult != " 200" ]] && echo " HTTP Error $httpResult fetching $runtimeFullName from $DNX_FEED " && return 1
147
+ [[ $httpResult == " 404" ]] && printf " %b\n " " ${Red} $ runtimeFullName was not found in repository $DNX_FEED ${RCol} " && return 1
148
+ [[ $httpResult != " 302" && $httpResult != " 200" ]] && echo " ${Red} HTTP Error $httpResult fetching $runtimeFullName from $DNX_FEED ${RCol} " && return 1
107
149
108
150
__dnvm_unpack $runtimeFile $runtimeFolder
109
151
return $?
@@ -163,47 +205,65 @@ __dnvm_locate_runtime_bin_from_full_name() {
163
205
[ -e " $_DNVM_USER_PACKAGES /$runtimeFullName /bin" ] && echo " $_DNVM_USER_PACKAGES /$runtimeFullName /bin" && return
164
206
}
165
207
208
+ __echo_art () {
209
+ printf " %b" " ${Cya} "
210
+ echo " ___ _ ___ ____ ___"
211
+ echo " / _ \/ |/ / | / / |/ /"
212
+ echo " / // / /| |/ / /|_/ / "
213
+ echo " /____/_/|_/ |___/_/ /_/ "
214
+ printf " %b" " ${RCol} "
215
+ }
216
+
166
217
__dnvm_help () {
218
+ __echo_art
167
219
echo " "
168
220
echo " $_DNVM_VERSION_MANAGER_NAME - Version 1.0.0-$_DNVM_BUILDNUMBER "
169
- [ " $_DNVM_AUTHORS " != " {{*" ] && echo " By $_DNVM_AUTHORS "
221
+ [[ " $_DNVM_AUTHORS " != {{* ] ] && echo " By $_DNVM_AUTHORS "
170
222
echo " "
171
- echo " USAGE: $_DNVM_COMMAND_NAME <command> [options]"
223
+ printf " %b\n " " ${Cya} USAGE:${Yel} $_DNVM_COMMAND_NAME <command> [options] ${RCol} \n "
172
224
echo " "
173
- echo " $_DNVM_COMMAND_NAME upgrade"
174
- echo " install latest $_DNVM_RUNTIME_SHORT_NAME from feed"
175
- echo " add $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line"
176
- echo " set installed version as default"
225
+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME upgrade [-f|-force] ${RCol} "
226
+ echo " install latest $_DNVM_RUNTIME_SHORT_NAME from feed"
227
+ echo " adds $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line"
228
+ echo " set installed version as default"
229
+ echo " -f|forces force upgrade. Overwrite existing version of $_DNVM_RUNTIME_SHORT_NAME if already installed"
177
230
echo " "
178
- echo " $_DNVM_COMMAND_NAME install <semver>|<alias>|<nupkg>|latest [-a|-alias <alias>] [-p -persistent]"
179
- echo " <semver>|<alias> install requested $_DNVM_RUNTIME_SHORT_NAME from feed"
180
- echo " <nupkg> install requested $_DNVM_RUNTIME_SHORT_NAME from local package on filesystem"
181
- echo " latest install latest version of $_DNVM_RUNTIME_SHORT_NAME from feed"
182
- echo " -a|-alias <alias> set alias <alias> for requested $_DNVM_RUNTIME_SHORT_NAME on install"
183
- echo " -p -persistent set installed version as default"
184
- echo " add $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line "
231
+ printf " %b\n " " ${Yel} $ _DNVM_COMMAND_NAME install <semver>|<alias>|<nupkg>|latest [-a|-alias <alias>] [-p| -persistent] [-f|-force] ${RCol} "
232
+ echo " <semver>|<alias> install requested $_DNVM_RUNTIME_SHORT_NAME from feed"
233
+ echo " <nupkg> install requested $_DNVM_RUNTIME_SHORT_NAME from local package on filesystem"
234
+ echo " latest install latest version of $_DNVM_RUNTIME_SHORT_NAME from feed"
235
+ echo " -a|-alias <alias> set alias <alias> for requested $_DNVM_RUNTIME_SHORT_NAME on install"
236
+ echo " -p| -persistent set installed version as default"
237
+ echo " -f|force force install. Overwrite existing version of $_DNVM_RUNTIME_SHORT_NAME if already installed "
185
238
echo " "
186
- echo " $_DNVM_COMMAND_NAME use <semver>|<alias>|<package>|none [-p -persistent]"
187
- echo " <semver>|<alias>|<package> add $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line "
188
- echo " none remove $_DNVM_RUNTIME_SHORT_NAME bin from path of current command line"
189
- echo " -p -persistent set selected version as default"
239
+ echo " adds $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line"
190
240
echo " "
191
- echo " $_DNVM_COMMAND_NAME list"
192
- echo " list $_DNVM_RUNTIME_SHORT_NAME versions installed "
241
+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME use <semver>|<alias>|<package>|none [-p -persistent] ${RCol} "
242
+ echo " <semver>|<alias>|<package> add $_DNVM_RUNTIME_SHORT_NAME bin to path of current command line "
243
+ echo " none remove $_DNVM_RUNTIME_SHORT_NAME bin from path of current command line"
244
+ echo " -p|-persistent set selected version as default"
193
245
echo " "
194
- echo " $_DNVM_COMMAND_NAME alias "
195
- echo " list $_DNVM_RUNTIME_SHORT_NAME aliases which have been defined "
246
+ printf " %b\n " " ${Yel} $ _DNVM_COMMAND_NAME list ${RCol} "
247
+ echo " list $_DNVM_RUNTIME_SHORT_NAME versions installed "
196
248
echo " "
197
- echo " $_DNVM_COMMAND_NAME alias <alias> "
198
- echo " display value of the specified alias "
249
+ printf " %b\n " " ${Yel} $ _DNVM_COMMAND_NAME alias ${RCol} "
250
+ echo " list $_DNVM_RUNTIME_SHORT_NAME aliases which have been defined "
199
251
echo " "
200
- echo " $_DNVM_COMMAND_NAME alias <alias> <semver>|<alias>|<package>"
201
- echo " <alias> the name of the alias to set"
202
- echo " <semver>|<alias>|<package> the $_DNVM_RUNTIME_SHORT_NAME version to set the alias to. Alternatively use the version of the specified alias"
252
+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME alias <alias> ${RCol} "
253
+ echo " display value of the specified alias"
203
254
echo " "
204
- echo " $_DNVM_COMMAND_NAME unalias <alias>"
205
- echo " remove the specified alias"
255
+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME alias <alias> <semver>|<alias>|<package> ${RCol} "
256
+ echo " <alias> the name of the alias to set"
257
+ echo " <semver>|<alias>|<package> the $_DNVM_RUNTIME_SHORT_NAME version to set the alias to. Alternatively use the version of the specified alias"
206
258
echo " "
259
+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME unalias <alias> ${RCol} "
260
+ echo " remove the specified alias"
261
+ echo " "
262
+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME [help|-h|-help|--help] ${RCol} "
263
+ echo " displays this help text."
264
+ echo " "
265
+ printf " %b\n" " ${Yel} $_DNVM_COMMAND_NAME update-self ${RCol} "
266
+ echo " updates dnvm itself."
207
267
}
208
268
209
269
dnvm ()
@@ -214,13 +274,17 @@ dnvm()
214
274
fi
215
275
216
276
case $1 in
217
- " help" )
277
+ " help" | " -h " | " -help " | " --help " )
218
278
__dnvm_help
219
279
;;
220
280
281
+ " update-self" )
282
+ __dnvm_update_self
283
+ ;;
284
+
221
285
" upgrade" )
222
- [ $# -ne 1 ] && __dnvm_help && return
223
- $_DNVM_COMMAND_NAME install latest -p
286
+ shift
287
+ $_DNVM_COMMAND_NAME install latest -p $1
224
288
;;
225
289
226
290
" install" )
@@ -229,25 +293,34 @@ dnvm()
229
293
local persistent=
230
294
local versionOrAlias=
231
295
local alias=
296
+ local force=
232
297
while [ $# -ne 0 ]
233
298
do
234
299
if [[ $1 == " -p" || $1 == " -persistent" ]]; then
235
300
local persistent=" -p"
236
301
elif [[ $1 == " -a" || $1 == " -alias" ]]; then
237
302
local alias=$2
238
303
shift
304
+ elif [[ $1 == " -f" || $1 == " -force" ]]; then
305
+ local force=" -f"
239
306
elif [[ -n $1 ]]; then
240
307
[[ -n $versionOrAlias ]] && echo " Invalid option $1 " && __dnvm_help && return 1
241
308
local versionOrAlias=$1
242
309
fi
243
310
shift
244
311
done
312
+
313
+ if ! __dnvm_has " mono" ; then
314
+ printf " %b\n" " ${Yel} It appears you don't have Mono available. Remember to get Mono before trying to run $DNVM_RUNTIME_SHORT_NAME application. ${RCol} " >&2 ;
315
+ fi
316
+
245
317
if [[ " $versionOrAlias " == " latest" ]]; then
246
318
echo " Determining latest version"
247
319
versionOrAlias=$( __dnvm_find_latest)
248
320
[[ $? == 1 ]] && echo " Error: Could not find latest version from feed $DNX_FEED " && return 1
249
- echo " Latest version is $versionOrAlias "
321
+ printf " %b\n " " Latest version is ${Cya} $ versionOrAlias ${RCol} "
250
322
fi
323
+
251
324
if [[ " $versionOrAlias " == * .nupkg ]]; then
252
325
local runtimeFullName=$( basename $versionOrAlias | sed " s/\(.*\)\.nupkg/\1/" )
253
326
local runtimeVersion=$( __dnvm_package_version " $runtimeFullName " )
@@ -267,7 +340,7 @@ dnvm()
267
340
else
268
341
local runtimeFullName=" $( __dnvm_requested_version_or_alias $versionOrAlias ) "
269
342
local runtimeFolder=" $_DNVM_USER_PACKAGES /$runtimeFullName "
270
- __dnvm_download " $runtimeFullName " " $runtimeFolder "
343
+ __dnvm_download " $runtimeFullName " " $runtimeFolder " " $force "
271
344
[[ $? == 1 ]] && return 1
272
345
$_DNVM_COMMAND_NAME use " $versionOrAlias " " $persistent "
273
346
[[ -n $alias ]] && $_DNVM_COMMAND_NAME alias " $alias " " $versionOrAlias "
0 commit comments