You can add this code to you .bashrc
or something...
# Go PAth Commander?
# I am so terrible with pans-naming
# https://en.wikipedia.org/wiki/Hopak
gopak(){
if [[ -z "${1}" ]]; then
printf "Help: gopak\n\n"
printf "\tgopak : %s\n" "Show help"
printf "\tgopak %s : %s\n" '?' "Show \$GOPATH variable"
printf "\tgopak %s : %s\n" '-' "Restore previous \$GOPATH variable"
printf "\tgopak %s : %s\n" 'cd $dir' "cd to \$GOPATH/src/github/\$dir"
printf "\tgopak %s : %s\n" 'set $dir' "set new \$GOPATH directory"
printf "\n"
return
fi
# SHOW $GOPATH variable
if [[ "${1}" == "?" ]]; then
if [[ ! -z "${GOPATH}" ]]; then
printf "\t\$GOPATH:%s\n\n" "${GOPATH}"
return 0
else
printf "\t\$GOPATH not set\n\n"
return 1
fi
fi
# CD into SRC directory
# tests gopak cd gopherdata/gophernotes
if [[ "${1}" == "cd" ]]; then
if [[ -z "${2}" ]]; then
printf "Command isn't clear: \`gopak cd where\`?\n"
printf "\t\`where\` suppose to ba package name\n\n"
return 1
fi
cd "$(printf '%s/src/github.com/%s' "${GOPATH}" "${2}" )"
return $?
fi
# RESTORE $GOPATH variable
if [[ "${1}" == "-" ]]; then
printf "Restoring old \$GOPATH:\n\n" "${OLD_PATH}"
if [[ ! -z "${OLD_GOPATH}" ]]; then
gopak set "${OLD_GOPATH}"
return $?
else
printf "\t\$OLD_GOPATH variable is empty\n\n"
return 1
fi
fi
if [[ "${1}" == "set" ]]; then
NEW_GOPATH="${2}"
if [[ -z "${NEW_GOPATH}" ]] || [[ ! -d "${NEW_GOPATH}" ]] ; then
NEW_GOPATH=$(pwd)
fi
# updating old path
OLD_GOPATH=$GOPATH
if [[ $NEW_GOPATH == $OLD_GOPATH ]]; then
printf "No Changes:\n"
printf "OLD \$GOPATH=%s\n" $NEW_GOPATH
return 1
fi
export GOPATH="$NEW_GOPATH"
printf "NEW \$GOPATH=%s\n" $NEW_GOPATH
printf "OLD \$GOPATH=%s\n" $OLD_GOPATH
fi
}
> gopak
Help: gopak
gopak : Show help
gopak ? : Show $GOPATH variable
gopak - : Restore previous $GOPATH variable
gopak cd $dir : cd to $GOPATH/src/github/$dir
gopak set $dir : set new $GOPATH directory
$ butuzov ~/Desktop
> gopak ?
$GOPATH:/Users/butuzov/go
$ butuzov ~/Desktop
> gopak set $(pwd)
NEW $GOPATH=/Users/butuzov/Desktop
OLD $GOPATH=/Users/butuzov/go
$ butuzov ~/Desktop
> go get github.com/pkg/profile
$ butuzov ~/Desktop
> gopak cd pkg/profile
$ butuzov ~/Desktop/src/github.com/pkg/profile
> ls -la
total 56
drwxr-xr-x 15 butuzov staff 480 Feb 24 11:10 .
drwxr-xr-x 3 butuzov staff 96 Feb 24 11:10 ..
drwxr-xr-x 12 butuzov staff 384 Feb 24 11:10 .git
-rw-r--r-- 1 butuzov staff 181 Feb 24 11:10 .travis.yml
-rw-r--r-- 1 butuzov staff 30 Feb 24 11:10 AUTHORS
-rw-r--r-- 1 butuzov staff 1292 Feb 24 11:10 LICENSE
-rw-r--r-- 1 butuzov staff 1305 Feb 24 11:10 README.md
-rw-r--r-- 1 butuzov staff 1473 Feb 24 11:10 example_test.go
-rw-r--r-- 1 butuzov staff 186 Feb 24 11:10 mutex.go
-rw-r--r-- 1 butuzov staff 142 Feb 24 11:10 mutex17.go
-rw-r--r-- 1 butuzov staff 6399 Feb 24 11:10 profile.go
-rw-r--r-- 1 butuzov staff 6503 Feb 24 11:10 profile_test.go
-rw-r--r-- 1 butuzov staff 114 Feb 24 11:10 trace.go
-rw-r--r-- 1 butuzov staff 183 Feb 24 11:10 trace16.go
-rw-r--r-- 1 butuzov staff 202 Feb 24 11:10 trace_test.go
$ butuzov ~/Desktop/src/github.com/pkg/profile
> gopak -
Restoring old $GOPATH:
NEW $GOPATH=/Users/butuzov/go
OLD $GOPATH=/Users/butuzov/Desktop
$ butuzov ~/Desktop/src/github.com/pkg/profile
> gopak ?
$GOPATH:/Users/butuzov/go
$ butuzov ~/Desktop/src/github.com/pkg/profile
>
quick weekend prototype