#!/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
|
|
}
|