Merge pull request #94 from wting/zsh-install-refactor

zsh install: only one line needs to be added to .zshrc now
pull/95/merge
Joel Schaerer 13 years ago
commit ab89fafc9f

@ -14,22 +14,26 @@
#You should have received a copy of the GNU General Public License
#along with autojump. If not, see <http://www.gnu.org/licenses/>.
#determine the data directory according to the XDG Base Directory Specification
if [ -n "$XDG_DATA_HOME" ]
then
# determine the data directory according to the XDG Base Directory Specification
if [ -n "$XDG_DATA_HOME" ]; then
export AUTOJUMP_DATA_DIR="$XDG_DATA_HOME/autojump"
else
export AUTOJUMP_DATA_DIR=~/.local/share/autojump
fi
if [ ! -e "${AUTOJUMP_DATA_DIR}" ]
then
if [ ! -e "${AUTOJUMP_DATA_DIR}" ]; then
mkdir -p "${AUTOJUMP_DATA_DIR}"
mv ~/.autojump_py "${AUTOJUMP_DATA_DIR}/autojump_py" 2>>/dev/null #migration
mv ~/.autojump_py.bak "${AUTOJUMP_DATA_DIR}/autojump_py.bak" 2>>/dev/null
mv ~/.autojump_errors "${AUTOJUMP_DATA_DIR}/autojump_errors" 2>>/dev/null
fi
# set paths if necessary for local installations
if [[ -d ~/.autojump/ ]]; then
path=(~/.autojump/bin $path)
fpath=(/home/ting/.autojump/functions/ $fpath)
fi
function autojump_preexec() {
{ (autojump -a "$(pwd -P)"&)>/dev/null 2>>|${AUTOJUMP_DATA_DIR}/.autojump_errors ; } 2>/dev/null
}

@ -16,7 +16,7 @@
#along with autojump. If not, see <http://www.gnu.org/licenses/>.
function show_help {
echo "sudo ./install.zsh [--local] [--prefix /usr/local]"
echo "sudo ./install.zsh [--local] [--prefix /usr/local]"
}
prefix=/usr
@ -24,42 +24,42 @@ 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
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
echo "Please rerun as root or use the --local option."
exit 1
fi
echo "Installing main files to ${prefix} ..."
@ -77,62 +77,66 @@ 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
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."
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
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}/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/
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 "\tpath=(${prefix}/bin \${path})"
echo -e "\tfpath=(${prefix}/functions \${fpath})"
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, delete the ${prefix} directory and relevant lines from ~/.zshrc."
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

Loading…
Cancel
Save