1
0
mirror of https://github.com/wting/autojump synced 2024-10-27 20:34:07 +00:00

bash local installation finished

This commit is contained in:
William Ting 2012-02-07 15:40:57 -10:00
parent d1712dd757
commit 4da9d3ef75

View File

@ -16,21 +16,12 @@
#along with autojump. If not, see <http://www.gnu.org/licenses/>. #along with autojump. If not, see <http://www.gnu.org/licenses/>.
function show_help { function show_help {
echo "sudo ./install.sh [--prefix /usr/local]" echo "sudo ./install.sh [--local] [--prefix /usr/local]"
}
function die {
echo "$@" >&2
exit 1
}
function warn {
echo "WARNING: $@" >&2
} }
# Default install directory. # Default install directory.
prefix=/usr prefix=/usr
profile_d=/etc/profile.d local=false
user=${SUDO_USER:-${USER}} user=${SUDO_USER:-${USER}}
OS=`uname` OS=`uname`
@ -40,25 +31,49 @@ if [ $OS == 'Darwin' ]; then
else else
user_home=$(getent passwd ${user} | cut -d: -f6) user_home=$(getent passwd ${user} | cut -d: -f6)
fi fi
bashrc_file=${user_home}/.bashrc bashrc_file=${user_home}/.bashrc
# Command line parsing # Command line parsing
while true; do while true; do
case "$1" in case "$1" in
-h|--help|-\?) show_help; exit 0;; -h|--help|-\?)
-p|--prefix) if [ $# -gt 1 ]; then show_help;
exit 0
;;
-l|--local)
local=true
prefix=~/.autojump
shift
;;
-p|--prefix)
if [ $# -gt 1 ]; then
prefix=$2; shift 2 prefix=$2; shift 2
profile_d=$prefix/etc/autojump profile_d=$prefix/etc/autojump
else else
die "--prefix or -p require an argument" die "--prefix or -p require an argument"
fi ;; fi
--) shift; break;; ;;
-*) echo "invalid option: $1" 1>&2; show_help; exit 1;; --)
*) break;; shift
break
;;
-*)
echo "invalid option: $1" 1>&2;
show_help;
exit 1
;;
*)
break
;;
esac esac
done done
echo "Installing to ${prefix} ..." 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 # add git revision to autojump
./git-version.sh ./git-version.sh
@ -72,34 +87,28 @@ cp jumpapplet ${prefix}/bin/
cp autojump ${prefix}/bin/ cp autojump ${prefix}/bin/
cp autojump.1 ${prefix}/share/man/man1/ cp autojump.1 ${prefix}/share/man/man1/
mkdir -p "$profile_d" if ( ! ${local} ); then
if [ ! -d "$profile_d" ] if [ -d "/etc/profile.d" ]; then
then cp -v autojump.bash /etc/profile.d/
warn "$profile_d does not exist, and I can't create it." cp -v autojump.sh /etc/profile.d/
fi
if [ -d "$profile_d" ]; then
cp autojump.bash $profile_d/
cp autojump.sh $profile_d/
# Make sure that the code we just copied has been sourced. # Make sure that the code we just copied has been sourced.
# check if .bashrc has sourced /etc/profile or $profile_d/autojump.bash # 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 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 "Your .bashrc doesn't seem to source /etc/profile or $profile_d/autojump.bash"
echo "Adding the $profile_d/autojump.bash to your .bashrc" echo "Adding the /etc/profile.d/autojump.bash to your .bashrc"
echo "" >> ${bashrc_file} echo "" >> ${bashrc_file}
echo "# Added by autojump install.sh" >> ${bashrc_file} echo "# Added by autojump install.sh" >> ${bashrc_file}
echo "source $profile_d/autojump.bash" >> ${bashrc_file} echo "source /etc/profile.d/autojump.bash" >> ${bashrc_file}
fi fi
echo "Done!" echo "Done!"
echo echo
echo "You need to source your ~/.bashrc (source ~/.bashrc) before you can start using autojump." echo "You need to source your ~/.bashrc (source ~/.bashrc) before you can start using autojump."
else 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]" 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 read ans
if [ ${#ans} -gt 0 ]; then if [ ${#ans} -gt 0 ]; then
if [ $ans = "y" -o $ans = "Y" -o $ans = "yes" -o $ans = "Yes" ]; then if [ $ans = "y" -o $ans = "Y" -o $ans = "yes" -o $ans = "Yes" ]; then
# Answered yes. Go ahead and add the autojump code # Answered yes. Go ahead and add the autojump code
echo "" >> ${bashrc_file} echo "" >> ${bashrc_file}
echo "#autojump" >> ${bashrc_file} echo "#autojump" >> ${bashrc_file}
@ -121,4 +130,19 @@ else
else else
echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!" echo "Then you need to put autojump.sh, or the code from it, somewhere where it will get read. Good luck!"
fi fi
fi
else
mkdir -p ${prefix}/etc/profile.d/
cp autojump.bash ${prefix}/etc/profile.d/
cp autojump.sh ${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 ~/.zshrc."
fi fi