mirror of
https://github.com/wahyd4/gvm.git
synced 2026-08-10 05:16:13 +10:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b690b3099 | ||
|
|
e5d5641e31 | ||
|
|
f99f732164 | ||
|
|
52a6e4afc9 | ||
|
|
3a5813784e | ||
|
|
12b1d1a254 | ||
|
|
be751c7d69 | ||
|
|
68c0ffdf9e | ||
|
|
469bd7c81c | ||
|
|
a9640b0bbc | ||
|
|
631872e847 | ||
|
|
aec0080464 | ||
|
|
0771bd160e | ||
|
|
13ef2e1f19 | ||
|
|
6050e54ba7 | ||
|
|
03ae59f0ff | ||
|
|
bc2ef7ba41 | ||
|
|
a28c8f220e | ||
|
|
6bbf1f3bb5 | ||
|
|
55ae6dd774 | ||
|
|
aaf041ac83 | ||
|
|
293096ad05 | ||
|
|
4558bd0b53 |
@@ -1,4 +1,5 @@
|
||||
# gvm
|
||||
by Josh Bussdieker (jbuss, jaja, jbussdieker)
|
||||
|
||||
GVM provides an interface to manage Go versions.
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ fi
|
||||
|
||||
$GVM_ROOT/scripts/gvm-check
|
||||
if [[ "$?" != "0" ]]; then
|
||||
display_error "Missing requirements. Please see messages above"
|
||||
display_error "Missing requirements."
|
||||
fi
|
||||
|
||||
if [[ $command == "version" ]]; then
|
||||
|
||||
@@ -16,6 +16,26 @@ update_profile() {
|
||||
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
|
||||
@@ -30,6 +50,11 @@ 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"
|
||||
@@ -65,6 +90,7 @@ if [ "$?" != "0" ]; then
|
||||
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
|
||||
|
||||
+6
-4
@@ -1,5 +1,7 @@
|
||||
_gvm()
|
||||
{
|
||||
LS_PATH=`which ls` || return 1
|
||||
|
||||
local cur prev opts base
|
||||
COMPREPLY=()
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
@@ -13,7 +15,7 @@ _gvm()
|
||||
use|delete|empty)
|
||||
[[ "$gvm_go_name" == "" ]] && return 1
|
||||
[[ $COMP_CWORD > 3 ]] && return 1
|
||||
local version=$(for x in `ls $GVM_ROOT/pkgsets/$gvm_go_name`; do echo ${x} ; done )
|
||||
local version=$(for x in `$LS_PATH $GVM_ROOT/pkgsets/$gvm_go_name`; do echo ${x} ; done )
|
||||
COMPREPLY=( $(compgen -W "${version}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
@@ -33,11 +35,11 @@ _gvm()
|
||||
[[ "$gvm_go_name" == "" ]] && return 1
|
||||
[[ "$gvm_pkgset_name" == "" ]] && return 1
|
||||
if [[ "$COMP_CWORD" == "3" ]]; then
|
||||
local version=$(for x in `ls $GVM_ROOT/pkgsets/$gvm_go_name/$gvm_pkgset_name/pkg.gvm`; do echo ${x} ; done )
|
||||
local version=$(for x in `$LS_PATH $GVM_ROOT/pkgsets/$gvm_go_name/$gvm_pkgset_name/pkg.gvm`; do echo ${x} ; done )
|
||||
COMPREPLY=( $(compgen -W "${version}" -- ${cur}) )
|
||||
return 0
|
||||
elif [[ "$COMP_CWORD" == "4" ]]; then
|
||||
local version=$(for x in `ls $GVM_ROOT/pkgsets/$gvm_go_name/$gvm_pkgset_name/pkg.gvm/${COMP_WORDS[3]}`; do echo ${x} ; done )
|
||||
local version=$(for x in `$LS_PATH $GVM_ROOT/pkgsets/$gvm_go_name/$gvm_pkgset_name/pkg.gvm/${COMP_WORDS[3]}`; do echo ${x} ; done )
|
||||
COMPREPLY=( $(compgen -W "${version}" -- ${cur}) )
|
||||
return 0
|
||||
fi
|
||||
@@ -63,7 +65,7 @@ _gvm()
|
||||
use|uninstall)
|
||||
[ ! -d $GVM_ROOT/gos ] && return 1
|
||||
[[ $COMP_CWORD > 2 ]] && return 1
|
||||
local installed_versions=$(for x in `ls $GVM_ROOT/gos`; do echo ${x} ; done )
|
||||
local installed_versions=$(for x in `$LS_PATH $GVM_ROOT/gos`; do echo ${x} ; done )
|
||||
COMPREPLY=( $(compgen -W "${installed_versions}" -- ${cur}) )
|
||||
return 0
|
||||
;;
|
||||
|
||||
+2
-1
@@ -1,10 +1,11 @@
|
||||
#!/bin/bash
|
||||
. $GVM_ROOT/scripts/functions
|
||||
LS_PATH=`which ls` || display_error "$LS_ERROR" || return 1
|
||||
|
||||
version=$1
|
||||
|
||||
if [ "$version" != "" ]; then
|
||||
fuzzy_match=`ls $GVM_ROOT/gos | sort | grep "$version" | head -n 1 | grep "$version"` ||
|
||||
fuzzy_match=`$LS_PATH $GVM_ROOT/gos | sort | grep "$version" | head -n 1 | grep "$version"` ||
|
||||
display_error "Invalid version $version"
|
||||
|
||||
foldername=$GVM_ROOT/gos/$fuzzy_match
|
||||
|
||||
Vendored
+6
-1
@@ -1,3 +1,6 @@
|
||||
#!/bin/bash
|
||||
. $GVM_ROOT/scripts/function/errors
|
||||
|
||||
function display_error() {
|
||||
tput sgr0
|
||||
tput setaf 1
|
||||
@@ -15,13 +18,15 @@ function display_message() {
|
||||
}
|
||||
|
||||
function gvm_pkgset_use() {
|
||||
LS_PATH=`which ls` || display_error "$LS_ERROR" || return 1
|
||||
|
||||
[[ "$1" != "" ]] ||
|
||||
display_error "Please specify a package set" || return 1
|
||||
|
||||
[[ "$gvm_go_name" != "" ]] ||
|
||||
display_error "No Go version selected" || return 1
|
||||
|
||||
fuzzy_match=`ls $GVM_ROOT/environments | sort | grep "$gvm_go_name@" | grep "$1" | head -n 1` ||
|
||||
fuzzy_match=`$LS_PATH $GVM_ROOT/environments | sort | grep "$gvm_go_name@" | grep "$1" | head -n 1` ||
|
||||
display_error "Invalid package set" || return 1
|
||||
|
||||
export PATH=$GVM_PATH_BACKUP
|
||||
|
||||
Vendored
+8
-3
@@ -1,3 +1,6 @@
|
||||
#!/bin/bash
|
||||
. $GVM_ROOT/scripts/function/errors
|
||||
|
||||
function display_error() {
|
||||
tput sgr0
|
||||
tput setaf 1
|
||||
@@ -15,15 +18,17 @@ function display_message() {
|
||||
}
|
||||
|
||||
function gvm_use() {
|
||||
LS_PATH=`which ls` || display_error "$LS_ERROR" || return 1
|
||||
|
||||
[[ "$1" != "" ]] ||
|
||||
display_error "Please specifiy the version" || return 1
|
||||
fuzzy_match=`ls $GVM_ROOT/gos | sort | grep "$1" | head -n 1 | grep "$1"` ||
|
||||
fuzzy_match=`$LS_PATH $GVM_ROOT/gos | sort | grep "$1" | head -n 1 | grep "$1"` ||
|
||||
display_error "Invalid version $1" || return 1
|
||||
|
||||
export PATH=$GVM_PATH_BACKUP
|
||||
. $GVM_ROOT/environments/$fuzzy_match
|
||||
. $GVM_ROOT/environments/$fuzzy_match &> /dev/null || display_error "Couldn't source environment" || return 1
|
||||
if [[ "$2" == "--default" ]]; then
|
||||
cp $GVM_ROOT/environments/$fuzzy_match $GVM_ROOT/environments/default
|
||||
cp $GVM_ROOT/environments/$fuzzy_match $GVM_ROOT/environments/default || display_error "Couldn't make $fuzzy_match default"
|
||||
fi
|
||||
|
||||
display_message "Now using version $fuzzy_match"
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
LS_ERROR="Couldn't find ls"
|
||||
+31
-9
@@ -1,15 +1,37 @@
|
||||
#!/bin/bash
|
||||
. $GVM_ROOT/scripts/functions
|
||||
|
||||
# Check for hg
|
||||
[ -z `which hg` ] &&
|
||||
display_error '* Could not find mercurial (try `sudo apt-get install mercurial`)'
|
||||
[ -z `which ar` ] &&
|
||||
display_error '* Could not find binutils (try `sudo apt-get install binutils (or binutils-multiarch)`)'
|
||||
[ -z `which bison` ] &&
|
||||
display_error '* Could not find bison (try `sudo apt-get install bison`)'
|
||||
[ -z `which gcc` ] &&
|
||||
display_error '* Could not find gcc (try `sudo apt-get install gcc`)'
|
||||
[ -z `which make` ] &&
|
||||
display_error '* Could not find make (try `sudo apt-get install make`)'
|
||||
display_warning "Could not find mercurial
|
||||
|
||||
linux: apt-get install mercurial
|
||||
mac: brew install mercurial
|
||||
" && exit 1
|
||||
# Check for ar
|
||||
[ -z `which ar` ] &&
|
||||
display_warning "Could not find binutils
|
||||
|
||||
linux: apt-get install binutils
|
||||
" && exit 1
|
||||
# Check for bison
|
||||
[ -z `which bison` ] &&
|
||||
display_warning "Could not find bison
|
||||
|
||||
linux: apt-get install bison
|
||||
" && exit 1
|
||||
# Check for gcc
|
||||
[ -z `which gcc` ] &&
|
||||
display_warning "Could not find gcc
|
||||
|
||||
linux: apt-get install gcc
|
||||
" && exit 1
|
||||
# Check for make
|
||||
[ -z `which make` ] &&
|
||||
display_warning "Could not find make
|
||||
|
||||
linux: apt-get install make
|
||||
" && exit 1
|
||||
|
||||
# All good!
|
||||
exit 0
|
||||
|
||||
+30
-25
@@ -3,25 +3,35 @@
|
||||
|
||||
function show_usage() {
|
||||
echo "Usage: gvm install [version] [options]"
|
||||
echo " -s, --source=SOURCE Install Go from specified source."
|
||||
echo " -h, --help Display this message."
|
||||
echo " -s, --source=SOURCE Install Go from specified source."
|
||||
echo " -pb, --with-protobuf Install Go protocol buffers."
|
||||
echo " -h, --help Display this message."
|
||||
}
|
||||
|
||||
read_command_line() {
|
||||
VERSION=$1
|
||||
shift
|
||||
if [ "${VERSION:0:1}" != "-" ]; then
|
||||
shift
|
||||
else
|
||||
display_warning "Invalid version: $1"
|
||||
show_usage
|
||||
exit 1
|
||||
fi
|
||||
GO_SOURCE_URL=https://go.googlecode.com/hg/
|
||||
for i in $*; do
|
||||
case $i in
|
||||
-s=*|--source=*)
|
||||
GO_SOURCE_URL=$i
|
||||
;;
|
||||
-h|--help*)
|
||||
-pb|--with-protobuf)
|
||||
INSTALL_PB="true"
|
||||
;;
|
||||
-h|--help)
|
||||
show_usage
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo "Invalid option $i"
|
||||
display_warning "Invalid option $i"
|
||||
show_usage
|
||||
exit 65 # Bad arguments
|
||||
;;
|
||||
@@ -38,7 +48,7 @@ download_source() {
|
||||
}
|
||||
|
||||
check_tag() {
|
||||
version=`hg tags -R $GO_CACHE_PATH | awk '{print $1}' | sort | grep $VERSION | head -n 1 | grep $VERSION`
|
||||
version=`hg tags -R $GO_CACHE_PATH | awk '{print $1}' | sort | grep "$VERSION" | head -n 1 | grep "$VERSION"`
|
||||
}
|
||||
|
||||
update_source() {
|
||||
@@ -81,11 +91,11 @@ create_enviroment() {
|
||||
|
||||
install_go() {
|
||||
GO_INSTALL_ROOT=$GVM_ROOT/gos/$version
|
||||
#trap 'rm -rf $GO_INSTALL_ROOT; display_error "Canceled!"' INT
|
||||
trap 'rm -rf $GO_INSTALL_ROOT; display_error "Canceled!"' INT
|
||||
|
||||
# Check for existing install
|
||||
if [ -d $GO_INSTALL_ROOT ]; then
|
||||
[ -f $GO_INSTALL_ROOT/manifest ] &&
|
||||
if [ -d "$GO_INSTALL_ROOT" ]; then
|
||||
[ -f "$GO_INSTALL_ROOT/manifest" ] &&
|
||||
display_error "Already installed!"
|
||||
display_warning "Removing corrupt install..."
|
||||
gvm uninstall $version
|
||||
@@ -104,34 +114,26 @@ install_go() {
|
||||
|
||||
install_gpkg() {
|
||||
display_message " * Installing gpkg..."
|
||||
$GVM_GOINSTALL github.com/moovweb/gpkg > $GVM_ROOT/logs/$version-gpkg.log 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "Failed to install gpkg"
|
||||
return 1
|
||||
fi
|
||||
$GVM_GOINSTALL github.com/moovweb/gpkg > $GVM_ROOT/logs/$version-gpkg.log 2>&1 || return 1
|
||||
}
|
||||
|
||||
install_gb() {
|
||||
display_message " * Installing gb..."
|
||||
$GVM_GOINSTALL github.com/jbussdieker/go-gb/gb > $GVM_ROOT/logs/$version-gb.log 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "Failed to install gb"
|
||||
return 1
|
||||
fi
|
||||
$GVM_GOINSTALL github.com/jbussdieker/go-gb/gb > $GVM_ROOT/logs/$version-gb.log 2>&1 || return 1
|
||||
}
|
||||
|
||||
install_goprotobuf() {
|
||||
display_message " * Installing goprotobuf..."
|
||||
$GVM_GOINSTALL goprotobuf.googlecode.com/hg/proto > $GVM_ROOT/logs/$version-pb-compiler.log 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "Failed to install goprotobuf"
|
||||
display_warning "Failed to install goprotobuf"
|
||||
return 1
|
||||
fi
|
||||
#if [[ $version == "release.r60.3" ]]; then
|
||||
cd $GVM_ROOT/gos/$version/src/pkg/goprotobuf.googlecode.com/hg/compiler
|
||||
make install >> $GVM_ROOT/logs/$version-pb-compiler.log 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "Failed to install goprotobuf compiler"
|
||||
display_warning "Failed to install goprotobuf compiler"
|
||||
return 1
|
||||
fi
|
||||
#fi
|
||||
@@ -140,18 +142,21 @@ install_goprotobuf() {
|
||||
main() {
|
||||
trap 'display_error "Canceled!"' INT
|
||||
read_command_line $@
|
||||
[ -z $VERSION ] && display_error "No version specified"
|
||||
[ "$VERSION" == "" ] && display_error "No version specified"
|
||||
download_source
|
||||
check_tag || (update_source && check_tag) || display_error "Unrecognized Go version"
|
||||
install_go
|
||||
|
||||
GVM_GOINSTALL="goinstall"
|
||||
which goinstall &> /dev/null ||
|
||||
GVM_GOINSTALL="go get"
|
||||
x="`hg tags -R ~/.gvm/archive/go`"; echo ${x#*b0819469a6df} | grep "$version " &> /dev/null
|
||||
if [[ "$?" == "1" ]]; then
|
||||
install_gpkg
|
||||
install_gb
|
||||
install_goprotobuf
|
||||
install_gb || display_warning "Failed to install gb"
|
||||
install_gpkg || display_warning "Failed to install gpkg"
|
||||
if [ "$INSTALL_PB" == "true" ]; then
|
||||
install_goprotobuf
|
||||
fi
|
||||
fi
|
||||
cd $GO_INSTALL_ROOT && find . > manifest
|
||||
}
|
||||
|
||||
+3
-2
@@ -1,14 +1,15 @@
|
||||
#!/bin/bash
|
||||
. $GVM_ROOT/scripts/functions
|
||||
LS_PATH=`which ls` || display_error "$LS_ERROR" || return 1
|
||||
|
||||
echo
|
||||
display_message "gvm gos (installed)"
|
||||
echo
|
||||
if [ -d $GVM_ROOT/gos ]; then
|
||||
if [[ "$gvm_go_name" != "" ]]; then
|
||||
ls -1 $GVM_ROOT/gos | sed 's/^/ /g' | sed 's/^ '$gvm_go_name'/=> '$gvm_go_name'/g'
|
||||
$LS_PATH -1 $GVM_ROOT/gos | sed 's/^/ /g' | sed 's/^ '$gvm_go_name'/=> '$gvm_go_name'/g'
|
||||
else
|
||||
ls -1 $GVM_ROOT/gos | sed 's/^/ /g'
|
||||
$LS_PATH -1 $GVM_ROOT/gos | sed 's/^/ /g'
|
||||
fi
|
||||
fi
|
||||
echo
|
||||
|
||||
@@ -13,8 +13,8 @@ cp $GVM_ROOT/environments/$gvm_go_name $GVM_ROOT/environments/$gvm_go_name@$1 ||
|
||||
display_error "Could copy environment"
|
||||
echo "export gvm_pkgset_name=\"$1\"" >> $GVM_ROOT/environments/$gvm_go_name@$1 ||
|
||||
display_error "Could not extend environment"
|
||||
echo "export GOPATH; GOPATH=\"$GVM_ROOT/pkgsets/release.r60.3/$1:\$GOPATH\"" >> $GVM_ROOT/environments/$gvm_go_name@$1 ||
|
||||
echo "export GOPATH; GOPATH=\"$GVM_ROOT/pkgsets/$gvm_go_name/$1:\$GOPATH\"" >> $GVM_ROOT/environments/$gvm_go_name@$1 ||
|
||||
display_error "Could not extend environment"
|
||||
echo "export PATH; PATH=\"$GVM_ROOT/pkgsets/release.r60.3/$1/bin:\$PATH\"" >> $GVM_ROOT/environments/$gvm_go_name@$1 ||
|
||||
echo "export PATH; PATH=\"$GVM_ROOT/pkgsets/$gvm_go_name/$1/bin:\$PATH\"" >> $GVM_ROOT/environments/$gvm_go_name@$1 ||
|
||||
display_error "Could not extend environment"
|
||||
|
||||
|
||||
+2
-1
@@ -1,10 +1,11 @@
|
||||
#!/bin/bash
|
||||
. $GVM_ROOT/scripts/functions
|
||||
LS_PATH=`which ls` || display_error "$LS_ERROR" || return 1
|
||||
|
||||
[[ "$1" == "" ]] &&
|
||||
display_error "Please specifiy the version"
|
||||
|
||||
fuzzy_match=`ls $GVM_ROOT/gos | sort | grep "$1" | head -n 1 | grep "$1"` ||
|
||||
fuzzy_match=`$LS_PATH $GVM_ROOT/gos | sort | grep "$1" | head -n 1 | grep "$1"` ||
|
||||
display_error "Invalid version $1"
|
||||
|
||||
if [ -d $GVM_ROOT/gos/$fuzzy_match ]; then
|
||||
|
||||
Reference in New Issue
Block a user