diff --git a/install.zsh b/install.zsh index 2a8d1e8..8f2a9c4 100755 --- a/install.zsh +++ b/install.zsh @@ -20,17 +20,24 @@ function show_help { } prefix=/usr +local_install=false #command line parsing while true; do case "$1" in -h|--help|-\?) show_help; exit 0;; - -p|--prefix) if [ $# -gt 1 ]; then - prefix=$2; shift 2 - else - echo "--prefix or -p require an argument" 1>&2 - exit 1 - fi ;; + -l|--local); + local_install=true + prefix=~/.autojump + shift + ;; + -p|--prefix) + if [ $# -gt 1 ]; then + prefix=$2; shift 2 + else + echo "--prefix or -p require an argument" 1>&2 + exit 1 + fi ;; --) shift; break;; -*) echo "invalid option: $1" 1>&2; show_help; exit 1;; *) break;; @@ -42,53 +49,72 @@ echo "Installing main files to ${prefix} ..." # add git revision to autojump ./git-version.sh -sudo mkdir -p ${prefix}/share/autojump/ -sudo mkdir -p ${prefix}/bin/ -sudo mkdir -p ${prefix}/share/man/man1/ -sudo cp icon.png ${prefix}/share/autojump/ -sudo cp jumpapplet ${prefix}/bin/ -sudo cp autojump ${prefix}/bin/ -sudo cp autojump.1 ${prefix}/share/man/man1/ +mkdir -p ${prefix}/share/autojump/ +mkdir -p ${prefix}/bin/ +mkdir -p ${prefix}/share/man/man1/ +cp icon.png ${prefix}/share/autojump/ +cp jumpapplet ${prefix}/bin/ +cp autojump ${prefix}/bin/ +cp autojump.1 ${prefix}/share/man/man1/ # autocompletion file in the first directory of the FPATH variable -fail=true -for f in $fpath -do - sudo cp _j $f && fail=false && break -done -if $fail -then - echo "Couldn't find a place to put the autocompletion file :-(" - echo "Still trying to install the rest of autojump..." -else - echo "Installed autocompletion file to $f" -fi - -if [ -d "/etc/profile.d" ]; then - sudo cp autojump.zsh /etc/profile.d/ - sudo cp autojump.sh /etc/profile.d/ - echo "Remember to add the line" - echo " source /etc/profile.d/autojump.zsh" - echo "or" - echo " source /etc/profile" - echo "to your ~/.zshrc if it's not there already" - echo - echo "You need to source your ~/.zshrc (source ~/.zshrc) before you can start using autojump." -else - echo "Your distribution does not have a /etc/profile.d directory, the default that we install one of the scripts to. Would you like us to copy it into your ~/.zshrc file to make it work? (If you have done this once before, delete the old version before doing it again.) [y/n]" - read ans - if [ ${#ans} -gt 0 ]; then - if [ $ans = "y" -o $ans = "Y" -o $ans = "yes" -o $ans = "Yes" ]; then - echo "" >> ~/.zshrc - echo "#autojump" >> ~/.zshrc - cat autojump.zsh >> ~/.zshrc - echo "Done!" - echo - echo "You need to source your ~/.zshrc (source ~/.zshrc) before you can start using autojump." +if ( ! ${local_install} ); then + fail=true + for f in $fpath + do + sudo cp _j $f && fail=false && break + done + if $fail + then + echo "Couldn't find a place to put the autocompletion file :-(" + echo "Still trying to install the rest of autojump..." else - echo "Then you need to put autojump.zsh, or the code from it, somewhere where it will get read. Good luck!" + echo "Installed autocompletion file to $f" fi - else - echo "Then you need to put autojump.zsh, or the code from it, somewhere where it will get read. Good luck!" - fi + + if [ -d "/etc/profile.d" ]; then + sudo cp autojump.zsh /etc/profile.d/ + sudo cp autojump.sh /etc/profile.d/ + echo "Remember to add the line" + echo " source /etc/profile.d/autojump.zsh" + echo "or" + echo " source /etc/profile" + echo "to your ~/.zshrc if it's not there already" + echo + echo "You need to source your ~/.zshrc (source ~/.zshrc) before you can start using autojump." + else + echo "Your distribution does not have a /etc/profile.d directory, the default that we install one of the scripts to. Would you like us to copy it into your ~/.zshrc file to make it work? (If you have done this once before, delete the old version before doing it again.) [y/n]" + read ans + if [ ${#ans} -gt 0 ]; then + if [ $ans = "y" -o $ans = "Y" -o $ans = "yes" -o $ans = "Yes" ]; then + echo "" >> ~/.zshrc + echo "#autojump" >> ~/.zshrc + cat autojump.zsh >> ~/.zshrc + echo "Done!" + echo + echo "You need to source your ~/.zshrc (source ~/.zshrc) before you can start using autojump." + else + echo "Then you need to put autojump.zsh, or the code from it, somewhere where it will get read. Good luck!" + fi + else + echo "Then you need to put autojump.zsh, or the code from it, somewhere where it will get read. Good luck!" + fi + fi +else + mkdir -p ${prefix}/functions/ + cp _j ${prefix}/functions/ + + mkdir -p ${prefix}/etc/profile.d/ + cp autojump.zsh ${prefix}/etc/profile.d/ + cp autojump.sh ${prefix}/etc/profile.d/ + + echo "Add the following lines to your ~/.zshrc:" + echo + echo " path=(${prefix}/bin \${path})" + echo " fpath=(${prefix}/functions \${fpath})" + echo " source ${prefix}/etc/profile.d/autojump.zsh" + echo + echo "You need to source your ~/.zshrc (source ~/.zshrc) before you can start using autojump." + echo + echo "To remove autojump, delete the ${prefix} directory and relevant lines from ~/.zshrc." fi