|
|
|
@ -0,0 +1,131 @@ |
|
|
|
#!/usr/bin/env bash |
|
|
|
GOPKG_ORIGINAL_PS1=${PS1} |
|
|
|
GOPKG_ORIGINAL_GOPATH=${GOPATH} |
|
|
|
|
|
|
|
gopkg_verify_env () { |
|
|
|
env=$(printenv ${1}) |
|
|
|
if [ -z ${env} ]; |
|
|
|
then |
|
|
|
echo '$'${1}' environment variable must be set.' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
|
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
gopkg_get_gopath_base () { |
|
|
|
# If we have multiple paths on $GOPATH we want the last one |
|
|
|
paths=$(echo ${GOPATH} | tr ':' '\n') |
|
|
|
go_path='' |
|
|
|
echo $paths | while read p; |
|
|
|
do |
|
|
|
go_path=$p |
|
|
|
done |
|
|
|
echo $go_path |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
gopkg_get_pkg_dir () { |
|
|
|
if [ -z $1 ]; |
|
|
|
then |
|
|
|
echo 'gopkg_get_pkg_dir requires 1 argument' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
|
|
|
|
go_path_base=$(gopkg_get_gopath_base) |
|
|
|
echo ${go_path_base%%/}'/src/'${GOPKG_REPO%%/}'/'${1} |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
gopkg_get_pkg_home () { |
|
|
|
if [ -z $1 ]; |
|
|
|
then |
|
|
|
echo 'gopkg_get_pkg_home requires 1 argument' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
echo ${GOPKG_HOME%%/}'/'${1} |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
mkgopkg () { |
|
|
|
if [ -z ${1} ]; |
|
|
|
then |
|
|
|
echo 'mkgopkg requires at least 1 argument' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
|
|
|
|
gopkg_verify_env 'GOPKG_HOME' || return 1 |
|
|
|
gopkg_verify_env 'GOPKG_REPO' || return 1 |
|
|
|
gopkg_verify_env 'GOPATH' || return 1 |
|
|
|
|
|
|
|
pkg_home=$(gopkg_get_pkg_home $1) |
|
|
|
pkg_dir=$(gopkg_get_pkg_dir $1) |
|
|
|
|
|
|
|
if [ -d ${pkg_dir} ] && [ -d ${pkg_home} ]; |
|
|
|
then |
|
|
|
echo 'gopkg '${1}' already exists. Activate it with `gopkg '${1}'`' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
echo 'Creating package source: '${pkg_dir} |
|
|
|
mkdir -p $pkg_dir |
|
|
|
echo 'Creating package home: '${pkg_home} |
|
|
|
mkdir -p $pkg_home |
|
|
|
echo 'Package '${1}' created.' |
|
|
|
echo 'Activate with `gopkg '${1}'`' |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
rmgopkg () { |
|
|
|
if [ -z ${1} ]; |
|
|
|
then |
|
|
|
echo 'rmgopkg requires at least 1 argument' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
gopkg_verify_env 'GOPKG_HOME' || return 1 |
|
|
|
|
|
|
|
pkg_home=$(gopkg_get_pkg_home $1) |
|
|
|
pkg_dir=$(gopkg_get_pkg_dir $1) |
|
|
|
if [ ! -d ${pkg_home} ]; |
|
|
|
then |
|
|
|
echo 'gopkg '${1}' does not exist. Not removing anything' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
|
|
|
|
if [ -d ${pkg_dir} ]; |
|
|
|
then |
|
|
|
echo 'Keeping source directory '${pkg_dir} |
|
|
|
fi |
|
|
|
|
|
|
|
echo 'Removing '${pkg_home} |
|
|
|
rm -rf ${pkg_home} |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
gopkg () { |
|
|
|
if [ -z ${1} ]; |
|
|
|
then |
|
|
|
echo 'gopkg requires at least 1 argument' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
gopkg_verify_env 'GOPKG_HOME' || return 1 |
|
|
|
|
|
|
|
pkg_home=$(gopkg_get_pkg_home $1) |
|
|
|
if [ ! -d ${pkg_home} ]; |
|
|
|
then |
|
|
|
echo 'gopkg '${1}' does not exists, create it first with `mkgopkg '${1}'`' >&2 |
|
|
|
return 1 |
|
|
|
fi |
|
|
|
|
|
|
|
go_path_base=$(gopkg_get_gopath_base) |
|
|
|
export GOPATH=${pkg_home}:${go_path_base} |
|
|
|
export PS1='('${1}') '$GOPKG_ORIGINAL_PS1 |
|
|
|
|
|
|
|
eval 'deactivate () { |
|
|
|
export GOPATH=${GOPKG_ORIGINAL_GOPATH} |
|
|
|
export PS1=${GOPKG_ORIGINAL_PS1} |
|
|
|
unset -f deactivate > /dev/null 2>&1 |
|
|
|
}' |
|
|
|
echo ${1}' activated. Deactivate with `deactivate`' |
|
|
|
|
|
|
|
return 0 |
|
|
|
} |