Skip to content

Instantly share code, notes, and snippets.

@patricksuo
Last active October 3, 2017 16:10
Show Gist options
  • Save patricksuo/41b2ee8a9d7b02077cf8b986c671f830 to your computer and use it in GitHub Desktop.
Save patricksuo/41b2ee8a9d7b02077cf8b986c671f830 to your computer and use it in GitHub Desktop.
#!/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