Last active
October 3, 2017 16:10
-
-
Save patricksuo/41b2ee8a9d7b02077cf8b986c671f830 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# alias godev="source /usr/local/bin/godev" | |
EchoHelp() { | |
echo "Hello" | |
} | |
NewGoProject() { | |
echo set up new go project at $1 | |
mkdir -p "$1"/{src,bin,pkg} | |
cd $ParamNewGoProjectPath | |
LeaveGodevMode | |
EnterGodevMode | |
} | |
LeaveGodevMode() { | |
if [ "$GODEV_MODE" != "true" ]; then | |
#echo Not in godev mode | |
return 0 | |
fi | |
echo leave GODEV_MODE | |
unset GODEV_MODE | |
if [ "$GODEV_OLD_GOPATH" != "" ]; then | |
echo "reverting GOPATH to $GODEV_OLD_GOPATH" | |
export GOPATH=$GODEV_OLD_GOPATH | |
unset GODEV_OLD_GOPATH | |
else | |
unset GOPATH | |
fi | |
if [ "$GODEV_OLD_PATH" != "" ]; then | |
echo "reverting PATH to $GODEV_OLD_PATH" | |
export PATH=$GODEV_OLD_PATH | |
unset GODEV_OLD_PATH | |
fi | |
} | |
EnterGodevMode() { | |
if [ "$GODEV_MODE" == "true" ]; then | |
#echo Already in godev mode | |
return 0; | |
fi | |
echo enter GODEV_MODE | |
export GODEV_MODE=true | |
export GODEV_OLD_PATH=$PATH | |
if [ "$GOPATH" != "" ]; then | |
export GODEV_OLD_GOPATH=$GOPATH | |
fi | |
export GOPATH=`pwd` | |
export GODEV_OLD_PATH=$PATH | |
export PATH=$PATH:$GOPATH/bin/ | |
} | |
ParamNewGoProjectPath="" | |
Cmd="Fallback" | |
set -e | |
while (( "$#" )); do | |
case "$1" in | |
-h|--help|help) | |
# echo help string | |
EchoHelp | |
Cmd="EchoHelp" | |
shift | |
break | |
;; | |
--) | |
# end argument parsing | |
shift | |
break | |
;; | |
-e|--enter|enter) | |
EnterGodevMode | |
Cmd="EnterGodevMode" | |
shift | |
break | |
;; | |
-l|--leave|leave) | |
LeaveGodevMode | |
Cmd="LeaveGodevMode" | |
shift | |
break | |
;; | |
-n|--new|new) | |
if [ -z $2 ]; then | |
echo "-n|--new|new need one argument" | |
return 1 | |
fi | |
ParamNewGoProjectPath=$(realpath $2) | |
NewGoProject $ParamNewGoProjectPath | |
Cmd="NewGoProject" | |
shift 2 | |
break | |
;; | |
*) | |
esac | |
done | |
# fallback behaviour is Set/Unset GODEV_MODE | |
if [ "$Cmd" == "Fallback" ]; then | |
if [ "$GODEV_MODE" == "true" ]; then | |
LeaveGodevMode | |
else | |
EnterGodevMode | |
fi | |
fi | |
set +e |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment