Skip to content

Commit ada6fa1

Browse files
Merge pull request #31 from jdaniel-cpts/jdaniel/GitbashSupport
2 parents 105a0b8 + 3afc320 commit ada6fa1

File tree

1 file changed

+48
-8
lines changed

1 file changed

+48
-8
lines changed

gvm

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,15 @@ upgrade() {
176176
curl -sL "$GVMURL" > .gvm.tmp
177177

178178
# shellcheck disable=SC2002
179-
DOWNLOADEDSUM=$(cat .gvm.tmp | shasum -a 256)
180179

180+
# Gitbash/Windows certutil with explit sha256 can be used
181+
if [[ "$OSTYPE" == "msys"* ]]
182+
then
183+
DOWNLOADEDSUM=$(certutil -hashfile .gvm.tmp sha256 | tail -n2 | head -n1)
184+
else
185+
DOWNLOADEDSUM=$(cat .gvm.tmp | shasum -a 256)
186+
fi
187+
181188
if [[ $DOWNLOADEDSUM != "$EXPECTEDSUM" ]]
182189
then
183190
printf "Checksum does not match new version of GVM [%s]\n" "$SCRIPTVERSION"
@@ -226,7 +233,17 @@ update() {
226233
EXPECTEDSUM=$(curl -sL "$SUMPATH")
227234

228235
# shellcheck disable=SC2086
229-
FILESUM=$(cat $0 | shasum -a 256)
236+
237+
if [[ "$OSTYPE" == "msys"* ]]
238+
then
239+
FILESUM=$(certutil -hashfile $0 sha256 | tail -n2 | head -n1)
240+
EXPECTEDSUM=$(curl -sL "$SUMPATH" | sed 's/ -//') # ⚠️ additional 2xspace + dash may also need to be addressed on unix installs
241+
else
242+
FILESUM=$(cat $0 | shasum -a 256)
243+
EXPECTEDSUM=$(curl -sL "$SUMPATH")
244+
fi
245+
246+
230247

231248
if [[ "$EXPECTEDSUM" != "Not Found" ]]
232249
then
@@ -294,6 +311,7 @@ then
294311
fi
295312

296313
arch="amd64"
314+
extention=".tar.gz"
297315
if uname -a | grep "arm64"&> /dev/null
298316
then
299317
arch="arm64"
@@ -306,6 +324,11 @@ then
306324
elif [[ "$OSTYPE" == "linux"* ]]
307325
then
308326
os="linux"
327+
elif [[ "$OSTYPE" == "msys"* ]]
328+
then
329+
os="windows"
330+
arch="amd64"
331+
extention=".zip"
309332
elif [[ "$OSTYPE" == "freebsd"* ]]
310333
then
311334
os="freebsd"
@@ -386,7 +409,8 @@ then
386409
else
387410
if [[ ! -d "$versionroot" ]]
388411
then
389-
pkg="go$version.$os-$arch.tar.gz"
412+
413+
pkg="go$version.$os-$arch$extention"
390414
url="$dlroot$pkg"
391415
pkgDir="$gvmroot/$pkg"
392416

@@ -407,10 +431,18 @@ else
407431
fail "$(printf "Unable to create %s\n" "$versionroot")"
408432
fi
409433

410-
if ! tar -C "$versionroot" -xzf "$pkgDir"
411-
then
412-
fail "$(printf "Unable to extract %s\n" "$pkgDir" rm -rf "$versionroot")"
413-
fi
434+
if [[ "$extention" == ".zip" ]]
435+
then
436+
if ! unzip -qd "$versionroot" "$pkgDir"
437+
then
438+
fail "$(printf "Unable to zip extract %s\n" "$pkgDir" rm -rf "$versionroot")"
439+
fi
440+
else
441+
if ! tar -C "$versionroot" -xzf "$pkgDir"
442+
then
443+
fail "$(printf "Unable to tar extract %s\n" "$pkgDir" rm -rf "$versionroot")"
444+
fi
445+
fi
414446

415447
rm "$pkgDir"
416448
fi
@@ -420,6 +452,14 @@ fi
420452
lnsrc="$versionroot/go"
421453

422454
printf "Updating symlink %s => %s\n" "$lnsrc" "$gvmroot"
455+
456+
#Windows + Gitbash require an explicit delete of the previously linked folder
457+
if [[ "$os" == "windows" ]]
458+
then
459+
printf "Removing %s/go if the directory exists\n" "$gvmroot"
460+
rm -rf "$gvmroot/go"
461+
fi
462+
423463
if ! ln -sf "$lnsrc" "$gvmroot"
424464
then
425465
fail "$(printf "Unable to symlink directory %s\n" "$lnsrc")"
@@ -461,4 +501,4 @@ then
461501
fi
462502

463503
printf "Go %s Active\n" "$version"
464-
fi
504+
fi

0 commit comments

Comments
 (0)