mirror of
https://github.com/wahyd4/gvm.git
synced 2026-08-09 04:46:19 +10:00
100 lines
3.1 KiB
Bash
Executable File
100 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
display_error() {
|
|
tput sgr0
|
|
tput setaf 1
|
|
echo "ERROR: $1"
|
|
tput sgr0
|
|
exit 1
|
|
}
|
|
|
|
update_profile() {
|
|
[ -f $1 ] || return 1
|
|
|
|
cat $1 | grep "$source_line" > /dev/null 2>&1
|
|
if [ $? -ne 0 ]; then
|
|
echo "$source_line" >> $1
|
|
fi
|
|
}
|
|
|
|
check_existing_go() {
|
|
if [ "$GOROOT" == "" ]; then
|
|
echo "No existing Go versions detected"
|
|
return
|
|
fi
|
|
echo "Created profile for existing install of Go at $GOROOT"
|
|
mkdir -p $GVM_DEST/$GVM_NAME/environments &> /dev/null || display_error "Failed to create environment directory"
|
|
mkdir -p $GVM_DEST/$GVM_NAME/pkgsets/system/global &> /dev/null || display_error "Failed to create new package set"
|
|
mkdir -p $GVM_DEST/$GVM_NAME/gos/system &> /dev/null || display_error "Failed to create new Go folder"
|
|
cat << EOF > $GVM_DEST/$GVM_NAME/environments/system
|
|
# Automatically generated file. DO NOT EDIT!
|
|
export GVM_ROOT; GVM_ROOT="$GVM_DEST/$GVM_NAME"
|
|
export gvm_go_name; gvm_go_name="system"
|
|
export gvm_pkgset_name; gvm_pkgset_name="global"
|
|
export GOROOT; GOROOT="$GOROOT"
|
|
export GOPATH; GOPATH="$GVM_DEST/$GVM_NAME/pkgsets/system/global"
|
|
export PATH; PATH="$GVM_DEST/$GVM_NAME/pkgsets/system/global:$GOROOT/bin:$GVM_ROOT/bin:\$PATH"
|
|
EOF
|
|
}
|
|
|
|
BRANCH=$1
|
|
GVM_DEST=$2
|
|
if [ "$GVM_DEST" == "" ]; then
|
|
GVM_DEST="$HOME"
|
|
GVM_NAME=".gvm"
|
|
else
|
|
GVM_NAME="gvm"
|
|
fi
|
|
|
|
SRC_REPO=https://github.com/moovweb/gvm.git
|
|
|
|
[ "$GVM_DEST" == "" ] && display_error "No destination specified!"
|
|
[ -d $GVM_DEST/$GVM_NAME ] && display_error "Already installed!"
|
|
[ -d $GVM_DEST ] || mkdir -p $GVM_DEST > /dev/null 2>&1 || display_error "Failed to create $GVM_DEST"
|
|
[ -z `which git` ] && display_error "Could not find git
|
|
|
|
linux: apt-get install git
|
|
mac: brew install git
|
|
"
|
|
|
|
cd $GVM_DEST && git clone $SRC_REPO $GVM_NAME > /dev/null 2>&1 ||
|
|
display_error "Failed to clone from $SRC_REPO into $GVM_DEST/$GVM_NAME"
|
|
|
|
if [ "$BRANCH" != "" ]; then
|
|
cd $GVM_DEST/$GVM_NAME && git checkout $BRANCH > /dev/null 2>&1 ||
|
|
display_error "Failed to checkout $BRANCH branch"
|
|
fi
|
|
|
|
mv $GVM_DEST/$GVM_NAME/.git $GVM_DEST/$GVM_NAME/git.bak
|
|
|
|
if [ "$GVM_NAME" == ".gvm" ]; then
|
|
source_line="[[ -s \"\$HOME/.gvm/scripts/gvm\" ]] && source \"\$HOME/.gvm/scripts/gvm\""
|
|
source_file="\$HOME/.gvm/scripts/gvm"
|
|
else
|
|
source_line="[[ -s \"${GVM_DEST}/gvm/scripts/gvm\" ]] && source \"${GVM_DEST}/gvm/scripts/gvm\""
|
|
source_file="${GVM_DEST}/gvm/scripts/gvm"
|
|
fi
|
|
|
|
if [ "`uname`" == "Linux" ]; then
|
|
update_profile $HOME/.bashrc || update_profile $HOME/.bash_profile
|
|
elif [ "`uname`" == "Darwin" ]; then
|
|
update_profile $HOME/.profile || update_profile $HOME/.bash_profile
|
|
fi
|
|
|
|
if [ "$?" != "0" ]; then
|
|
echo 'Unable to locate profile settings file'
|
|
echo
|
|
echo " You will have to manually add the following line:"
|
|
echo
|
|
echo " $source_line"
|
|
echo
|
|
fi
|
|
echo "export GVM_ROOT=$GVM_DEST/$GVM_NAME" > $GVM_DEST/$GVM_NAME/scripts/gvm
|
|
echo ". \$GVM_ROOT/scripts/gvm-default" >> $GVM_DEST/$GVM_NAME/scripts/gvm
|
|
check_existing_go
|
|
[[ -s "$GVM_DEST/$GVM_NAME/scripts/gvm" ]] && source "$GVM_DEST/$GVM_NAME/scripts/gvm"
|
|
echo "Installed GVM v${GVM_VERSION}"
|
|
echo
|
|
echo "Please restart your terminal session or to get started right away run"
|
|
echo " \`source ${source_file}\`"
|
|
echo
|