diff --git a/install.sh b/install.sh index 5bc1811..c94bb9f 100755 --- a/install.sh +++ b/install.sh @@ -15,12 +15,31 @@ #You should have received a copy of the GNU General Public License #along with autojump. If not, see . -function show_help { - echo "sudo ./install.sh [--local] [--prefix /usr/local]" +function add_msg { + echo + echo "Please add the line to ~/.${2}rc :" + echo + + if [ "${1}" == "global" ]; then + echo -e "\tsource /etc/profile.d/autojump.${2}" + elif [ "${1}" == "local" ]; then + echo -e "\tsource ~/etc/profile.d/autojump.${2}" + fi + + echo + echo "You need to run 'source ~/.${2}rc' before you can start using autojump." + echo + echo "To remove autojump, run './uninstall.sh'" + echo +} + +function help_msg { + echo "sudo ./install.sh [--local] [--prefix /usr/local] [--zsh]" } # Default install directory. prefix=/usr +shell="bash" local= user=${SUDO_USER:-${USER}} @@ -37,7 +56,7 @@ bashrc_file=${user_home}/.bashrc while true; do case "$1" in -h|--help|-\?) - show_help; + help_msg; exit 0 ;; -l|--local) @@ -53,13 +72,17 @@ while true; do exit 1 fi ;; + -z|--zsh) + shell="zsh" + shift + ;; --) shift break ;; -*) echo "invalid option: $1" 1>&2; - show_help; + help_msg; exit 1 ;; *) @@ -73,7 +96,9 @@ if [[ ${UID} != 0 ]] && [ ! ${local} ]; then exit 1 fi -echo -e "Installing files to ${prefix} ...\n" +echo +echo "Installing files to ${prefix} ..." +echo # add git revision to autojump ./git-version.sh @@ -87,35 +112,37 @@ cp -v jumpapplet ${prefix}/bin/ cp -v autojump ${prefix}/bin/ cp -v autojump.1 ${prefix}/share/man/man1/ +# global installation if [ ! ${local} ]; then + # install _j to the first accessible directory + if [ ${shell} == "zsh" ]; then + success= + cp -v _j /usr/local/share/zsh/site-functions/ && success=true + + if [ ! ${success} ]; then + echo + echo "Couldn't find a place to put the autocompletion file, please copy _j into your \$fpath" + echo "Installing the rest of autojump ..." + echo + fi + fi + if [ -d "/etc/profile.d" ]; then - cp -v autojump.bash /etc/profile.d/ cp -v autojump.sh /etc/profile.d/ - - echo - echo "Add the following lines to your ~/.bashrc:" - echo - echo -e "\tsource ${prefix}/etc/profile.d/autojump.bash" - echo - echo "You need to source your ~/.bashrc (source ~/.bashrc) before you can start using autojump." - echo - echo "To remove autojump, delete the ${prefix} directory and relevant lines from ~/.bashrc." - echo + cp -v autojump.${shell} /etc/profile.d/ + add_msg "global" ${shell} else echo "Your distribution does not have a '/etc/profile.d/' directory, please create it manually or use the local install option." fi -else +else # local installation mkdir -p ${prefix}/etc/profile.d/ - cp -v autojump.bash ${prefix}/etc/profile.d/ cp -v autojump.sh ${prefix}/etc/profile.d/ + cp -v autojump.${shell} ${prefix}/etc/profile.d/ - echo - echo "Add the following lines to your ~/.bashrc:" - echo - echo -e "\tsource ${prefix}/etc/profile.d/autojump.bash" - echo - echo "You need to source your ~/.bashrc (source ~/.bashrc) before you can start using autojump." - echo - echo "To remove autojump, delete the ${prefix} directory and relevant lines from ~/.bashrc." - echo + if [ ${shell} == "zsh" ]; then + mkdir -p ${prefix}/functions/ + cp _j ${prefix}/functions/ + fi + + add_msg "local" ${shell} fi diff --git a/install.zsh b/install.zsh deleted file mode 100755 index ff3deb9..0000000 --- a/install.zsh +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env zsh -#Copyright Joel Schaerer 2008, 2009 -#This file is part of autojump - -#autojump is free software: you can redistribute it and/or modify -#it under the terms of the GNU General Public License as published by -#the Free Software Foundation, either version 3 of the License, or -#(at your option) any later version. -# -#autojump is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -#GNU General Public License for more details. -# -#You should have received a copy of the GNU General Public License -#along with autojump. If not, see . - -function show_help { - echo "sudo ./install.zsh [--local] [--prefix /usr/local]" -} - -prefix=/usr -local=false - -#command line parsing -while true; do - case "$1" in - -h|--help|-\?) - show_help - exit 0 - ;; - -l|--local) - local=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 - ;; - esac -done - -if [[ ${UID} != 0 ]] && ! ${local}; then - echo "Please rerun as root or use the --local option." - exit 1 -fi - -echo "Installing main files to ${prefix} ..." - -# add git revision to autojump -./git-version.sh - -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 -if ( ! ${local} ); then - fail=true - for f in $fpath - do - cp _j $f && fail=false && break - done - if $fail - then - echo "Couldn't find a place to put the autocompletion file, please copy _j into your \$fpath" - echo "Still trying to install the rest of autojump..." - else - echo "Installed autocompletion file to $f" - fi - - if [ -d "/etc/profile.d" ]; then - cp -v autojump.zsh /etc/profile.d/ - cp -v autojump.sh /etc/profile.d/ - echo - echo "Add the following line to your ~/.zshrc:" - echo - echo -e "\tsource /etc/profile.d/autojump.zsh" - echo - echo "You need to source your ~/.zshrc (source ~/.zshrc) before you can start using autojump." - echo - if [[ ${prefix} != "/usr" ]]; then - echo "To remove autojump, run ./uninstall.zsh --prefix ${prefix}" - else - echo "To remove autojump, run ./uninstall.zsh" - fi - 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 - echo "Add the following lines to your ~/.zshrc:" - echo - echo -e "\tsource ${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, run ./uninstall.zsh" -fi diff --git a/uninstall.sh b/uninstall.sh index 764f57c..bfe4b15 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -19,41 +19,16 @@ function help_msg { echo "sudo ./uninstall.sh [--prefix /usr/local]" } -# zsh: remove _j from fpath -function remove_j { - # autocompletion file in the first directory of the FPATH variable - fail=true - for f in $fpath - do - if [ -f ${f}/_j ]; then - rm -v ${f}/_j || sudo rm -v ${f}/_j - break - fi - done -} - function remove_msg { - if [ "${2}" == "bash" ]; then - echo - echo "Please remove the line from ${bashrc_file} :" - echo - if [ "${1}" == "global" ]; then - echo -e "\tsource /etc/profile.d/autojump.bash" - elif [ "${1}" == "local" ]; then - echo -e "\tsource ~/etc/profile.d/autojump.bash" - fi - echo - elif [ "${2}" == "zsh" ]; then - echo - echo "Please remove the line from ~/.zshrc :" - echo - if [ "${1}" == "global" ]; then - echo -e "\tsource /etc/profile.d/autojump.zsh" - elif [ "${1}" == "local" ]; then - echo -e "\tsource ~/etc/profile.d/autojump.zsh" - fi - echo + echo + echo "Please remove the line from .${2}rc :" + echo + if [ "${1}" == "global" ]; then + echo -e "\tsource /etc/profile.d/autojump.${2}" + elif [ "${1}" == "local" ]; then + echo -e "\tsource ~/etc/profile.d/autojump.${2}" fi + echo } # Default install directory. @@ -98,6 +73,8 @@ if [ -d "${prefix}/share/autojump/" ]; then sudo rm -v ${prefix}/bin/autojump sudo rm -v ${prefix}/share/man/man1/autojump.1 sudo rm -v /etc/profile.d/autojump.sh + sudo rm -v /usr/local/share/zsh/site-functions/_j + if [ -f /etc/profile.d/autojump.bash ]; then sudo rm -v /etc/profile.d/autojump.bash remove_msg "global" "bash"