2011-01-05 19:05:36 +00:00
#!/usr/bin/env bash
2009-05-13 09:32:19 +00:00
#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 <http://www.gnu.org/licenses/>.
2010-06-07 09:10:22 +00:00
function show_help {
2012-02-08 01:40:57 +00:00
echo "sudo ./install.sh [--local] [--prefix /usr/local]"
2012-02-07 05:56:46 +00:00
}
2010-07-11 20:39:41 +00:00
# Default install directory.
2010-06-07 09:10:22 +00:00
prefix = /usr
2012-02-08 01:52:15 +00:00
local = 0
2010-06-07 09:10:22 +00:00
2011-09-27 14:07:37 +00:00
user = ${ SUDO_USER :- ${ USER } }
2011-11-29 18:37:43 +00:00
OS = ` uname`
2011-11-30 09:24:25 +00:00
2011-11-29 18:37:43 +00:00
if [ $OS = = 'Darwin' ] ; then
2011-11-30 09:24:25 +00:00
user_home = $( dscl . -search /Users UniqueID ${ user } | cut -d: -f6)
2011-11-29 18:37:43 +00:00
else
2011-11-30 09:24:25 +00:00
user_home = $( getent passwd ${ user } | cut -d: -f6)
2011-11-29 18:37:43 +00:00
fi
2012-02-08 01:40:57 +00:00
bashrc_file = ${ user_home } /.bashrc
2011-09-27 14:07:37 +00:00
2010-07-11 20:39:41 +00:00
# Command line parsing
2010-06-07 09:10:22 +00:00
while true; do
case " $1 " in
2012-02-08 01:40:57 +00:00
-h| --help| -\? )
show_help;
exit 0
; ;
-l| --local)
2012-02-08 01:52:15 +00:00
local = 1
2012-02-08 01:40:57 +00:00
prefix = ~/.autojump
shift
; ;
-p| --prefix)
if [ $# -gt 1 ] ; then
prefix = $2 ; shift 2
profile_d = $prefix /etc/autojump
else
die "--prefix or -p require an argument"
fi
; ;
--)
shift
break
; ;
-*)
echo " invalid option: $1 " 1>& 2;
show_help;
exit 1
; ;
*)
break
; ;
2010-06-07 09:10:22 +00:00
esac
done
2012-02-08 01:52:15 +00:00
if [ [ ${ UID } != 0 ] ] && [ ! ${ local } ] ; then
2012-02-08 01:40:57 +00:00
echo "Please rerun as root or use the --local option."
exit 1
fi
echo " Installing main files to ${ prefix } ... "
2010-06-07 09:10:22 +00:00
2011-09-16 06:21:35 +00:00
# add git revision to autojump
2011-09-16 06:35:20 +00:00
./git-version.sh
2011-09-16 06:21:35 +00:00
2010-07-11 20:39:41 +00:00
# INSTALL AUTOJUMP
2011-09-21 11:04:50 +00:00
mkdir -p ${ prefix } /share/autojump/
mkdir -p ${ prefix } /bin/
mkdir -p ${ prefix } /share/man/man1/
2012-02-08 01:52:15 +00:00
cp -v icon.png ${ prefix } /share/autojump/
cp -v jumpapplet ${ prefix } /bin/
cp -v autojump ${ prefix } /bin/
cp -v autojump.1 ${ prefix } /share/man/man1/
2010-07-11 20:39:41 +00:00
2012-02-08 01:52:15 +00:00
if [ ! ${ local } ] ; then
2012-02-08 01:40:57 +00:00
if [ -d "/etc/profile.d" ] ; then
cp -v autojump.bash /etc/profile.d/
cp -v autojump.sh /etc/profile.d/
# Make sure that the code we just copied has been sourced.
# check if .bashrc has sourced /etc/profile or /etc/profile.d/autojump.bash
if [ ` grep -c " ^[[:space:]]*\(source\|\.\) /etc/profile\(\.d/autojump\.bash\)[[:space:]]* $" ${ bashrc_file } ` -eq 0 ] ; then
echo " Your .bashrc doesn't seem to source /etc/profile or $profile_d /autojump.bash "
echo "Adding the /etc/profile.d/autojump.bash to your .bashrc"
echo "" >> ${ bashrc_file }
echo "# Added by autojump install.sh" >> ${ bashrc_file }
echo "source /etc/profile.d/autojump.bash" >> ${ bashrc_file }
fi
echo "Done!"
echo
echo "You need to source your ~/.bashrc (source ~/.bashrc) before you can start using autojump."
else
echo " Your distribution does not have a $profile_d directory, the default that we install one of the scripts to. Would you like us to copy it into your ~/.bashrc 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
# Answered yes. Go ahead and add the autojump code
echo "" >> ${ bashrc_file }
echo "#autojump" >> ${ bashrc_file }
cat autojump.bash | grep -v "^#" >> ${ bashrc_file }
# Since OSX uses .bash_profile, we need to make sure that .bashrc is properly sourced.
# Makes the assumption that if they have a line: source ~/.bashrc or . ~/.bashrc, that
# .bashrc has been properly sourced and you don't need to add it.
if [ $OS = = 'Darwin' -a x` grep -c " ^[[:space:]]*\(source\|\.\) ~/\.bashrc[[:space:]]* $" ~/.bash_profile` = = x0 ] ; then
echo "You are using OSX and your .bash_profile doesn't seem to be sourcing .bashrc"
echo "Adding source ~/.bashrc to your bashrc"
echo -e "\n# Get the aliases and functions" >> ~/.bash_profile
echo -e " if [ -f ${ bashrc_file } ]; then\n . ${ bashrc_file } \nfi " >> ~/.bash_profile
fi
echo "You need to source your ~/.bashrc (source ~/.bashrc) before you can start using autojump."
else
echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!"
fi
else
echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!"
fi
2010-07-11 20:39:41 +00:00
fi
2009-02-14 20:35:32 +00:00
else
2012-02-08 01:40:57 +00:00
mkdir -p ${ prefix } /etc/profile.d/
2012-02-08 01:52:15 +00:00
cp -v autojump.bash ${ prefix } /etc/profile.d/
cp -v autojump.sh ${ prefix } /etc/profile.d/
2010-07-11 20:39:41 +00:00
2012-02-08 01:40:57 +00:00
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
2012-02-08 01:52:15 +00:00
echo " To remove autojump, delete the ${ prefix } directory and relevant lines from ~/.bashrc. "
2009-02-19 21:09:59 +00:00
fi
2012-02-08 01:40:57 +00:00