Merge pull request #185 from kashike/feautre/shell

Add support for multiple shell types
This commit is contained in:
Zach 2016-04-03 21:53:08 -05:00
commit 1b3ca5485c

73
paper
View File

@ -1,11 +1,25 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# resolve shell-specifics
case "$(echo "$SHELL" | sed 's|/usr||g')" in
"/bin/zsh")
RCPATH="$HOME/.zshrc"
SOURCE="${BASH_SOURCE[0]:-${(%):-%N}}"
;;
*)
RCPATH="$HOME/.bashrc"
if [[ -f "$HOME/.bash_aliases" ]]; then
RCPATH="$HOME/.bash_aliases"
fi
SOURCE="${BASH_SOURCE[0]}"
;;
esac
# get base dir regardless of execution location # get base dir regardless of execution location
SOURCE="${BASH_SOURCE[0]}"
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")" SOURCE="$(readlink "$SOURCE")"
[[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located [[ "$SOURCE" != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done done
SOURCE=$([[ "$SOURCE" = /* ]] && echo "$SOURCE" || echo "$PWD/${SOURCE#./}") SOURCE=$([[ "$SOURCE" = /* ]] && echo "$SOURCE" || echo "$PWD/${SOURCE#./}")
basedir=$(dirname "$SOURCE") basedir=$(dirname "$SOURCE")
@ -21,7 +35,7 @@ paperunstash() {
} }
case "$1" in case "$1" in
"rbp" | "rebuild") "rb" | "rbp" | "rebuild")
( (
set -e set -e
cd "$basedir" cd "$basedir"
@ -51,6 +65,13 @@ case "$1" in
fi fi
) )
;; ;;
"m" | "mcdev")
(
set -e
cd "$basedir"
scripts/makemcdevsrc.sh "$basedir"
)
;;
"r" | "root") "r" | "root")
cd "$basedir" cd "$basedir"
;; ;;
@ -104,14 +125,16 @@ case "$1" in
esac esac
;; ;;
"setup") "setup")
if [[ -f ~/.bashrc ]] ; then if [[ -f "$RCPATH" ]] ; then
NAME="paper" NAME="paper"
if [[ ! -z "${2+x}" ]] ; then if [[ ! -z "${2+x}" ]] ; then
NAME="$2" NAME="$2"
fi fi
(grep "alias $NAME=" ~/.bashrc > /dev/null) && (sed -i "s|alias $NAME=.*|alias $NAME='. $SOURCE'|g" ~/.bashrc) || (echo "alias $NAME='. $SOURCE'" >> ~/.bashrc) (grep "alias $NAME=" "$RCPATH" > /dev/null) && (sed -i "s|alias $NAME=.*|alias $NAME='. $SOURCE'|g" "$RCPATH") || (echo "alias $NAME='. $SOURCE'" >> "$RCPATH")
alias "$NAME=. $SOURCE" alias "$NAME=. $SOURCE"
echo "You can now just type '$NAME' at any time to access the paper tool." echo "You can now just type '$NAME' at any time to access the paper tool."
else
echo "We were unable to setup the paper build tool alias: $RCPATH is missing"
fi fi
;; ;;
*) *)
@ -120,27 +143,31 @@ case "$1" in
echo "'setup' command. View below for details. For essential building and patching, you do not need to do the setup." echo "'setup' command. View below for details. For essential building and patching, you do not need to do the setup."
echo "" echo ""
echo " Normal commands:" echo " Normal commands:"
echo " * rbp, rebuild | Rebuild patches, can be called from anywhere." echo " * rb, rbp, rebuild | Rebuild patches, can be called from anywhere."
echo " * p, patch | Apply all patches to the project without building it. Can be run from anywhere." echo " * p, patch | Apply all patches to the project without building it. Can be run from anywhere."
echo " * j, jar | Apply all patches and build the project, paperclip.jar will be output. Can be run from anywhere." echo " * j, jar | Apply all patches and build the project, paperclip.jar will be output. Can be run from anywhere."
echo " * m, mcdev | Setup decompiled sources for non-modified NMS files to be imported into an IDE. Can be run from anywhere."
echo "" echo ""
echo " These commands require the setup command before use:" echo " These commands require the setup command before use:"
echo " * r, root | Change directory to the root of the project." echo " * r, root | Change directory to the root of the project."
echo " * a. api | Move to the Paper-API directory." echo " * a. api | Move to the Paper-API directory."
echo " * s, server | Move to the Paper-Server directory." echo " * s, server | Move to the Paper-Server directory."
echo " * e, edit | Use to edit a specific patch, give it the argument \"server\" or \"api\"" echo " * e, edit | Use to edit a specific patch, give it the argument \"server\" or \"api\""
echo " | respectively to edit the correct project. Use the argument \"continue\" after" echo " | respectively to edit the correct project. Use the argument \"continue\" after"
echo " | the changes have been made to finish and rebuild patches. Can be called from anywhere." echo " | the changes have been made to finish and rebuild patches. Can be called from anywhere."
echo "" echo ""
echo " * setup | Add an alias to .bashrc to allow full functionality of this script. Run as:" echo " * setup | Add an alias to $RCPATH to allow full functionality of this script. Run as:"
echo " | . ./paper setup" echo " | . ./paper setup"
echo " | After you run this command you'll be able to just run 'paper' from anywhere." echo " | After you run this command you'll be able to just run 'paper' from anywhere."
echo " | The default name for the resulting alias is 'paper', you can give an argument to override" echo " | The default name for the resulting alias is 'paper', you can give an argument to override"
echo " | this default, such as:" echo " | this default, such as:"
echo " | . ./paper setup example" echo " | . ./paper setup example"
echo " | Which will allow you to run 'example' instead." echo " | Which will allow you to run 'example' instead."
;; ;;
esac esac
unset RCPATH
unset SOURCE
unset basedir
unset -f paperstash unset -f paperstash
unset -f paperunstash unset -f paperunstash