mirror of https://github.com/wting/autojump
parent
23779d65a7
commit
a59d671fb0
@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
from argparse import ArgumentParser
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
|
||||
def parse_arguments():
|
||||
parser = ArgumentParser(
|
||||
description='Installs autojump globally for root users, otherwise \
|
||||
installs in current user\'s home directory.')
|
||||
parser.add_argument(
|
||||
'-n', '--dryrun', action="store_true", default=False,
|
||||
help='simulate installation')
|
||||
parser.add_argument(
|
||||
'-d', '--destdir', metavar='DIR',
|
||||
help='set destination to DIR')
|
||||
parser.add_argument(
|
||||
'-p', '--prefix', metavar='DIR',
|
||||
help='set prefix to DIR')
|
||||
parser.add_argument(
|
||||
'-z', '--zshshare', metavar='DIR',
|
||||
help='set zsh share destination to DIR')
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def remove_system_installation(dryrun=False):
|
||||
default_destdir = '/'
|
||||
default_prefix = '/usr/local'
|
||||
default_zshshare = '/usr/share/zsh/site-functions'
|
||||
|
||||
bin_dir = os.path.join(default_destdir, default_prefix, 'bin')
|
||||
etc_dir = os.path.join(default_destdir, 'etc/profile.d')
|
||||
doc_dir = os.path.join(default_destdir, default_prefix, 'share/man/man1')
|
||||
icon_dir = os.path.join(default_destdir, default_prefix, 'share/autojump')
|
||||
zshshare_dir = os.path.join(default_destdir, default_zshshare)
|
||||
|
||||
if os.path.exists(os.path.join(bin_dir, 'autojump')):
|
||||
print("Found system installation.")
|
||||
else:
|
||||
return
|
||||
|
||||
rm(os.path.join(bin_dir, 'autojump'), dryrun)
|
||||
rm(os.path.join(bin_dir, 'data.py'), dryrun)
|
||||
rm(os.path.join(bin_dir, 'utils.py'), dryrun)
|
||||
rm(os.path.join(etc_dir, 'autojump.sh'), dryrun)
|
||||
rm(os.path.join(etc_dir, 'autojump.bash'), dryrun)
|
||||
rm(os.path.join(etc_dir, 'autojump.fish'), dryrun)
|
||||
rm(os.path.join(etc_dir, 'autojump.zsh'), dryrun)
|
||||
rm(os.path.join(zshshare_dir, '_j'), dryrun)
|
||||
rmdir(icon_dir, dryrun)
|
||||
rm(os.path.join(doc_dir, 'autojump.1'), dryrun)
|
||||
|
||||
|
||||
def remove_user_installation(dryrun=False):
|
||||
default_destdir = os.path.join(os.path.expanduser("~"), '.autojump')
|
||||
if os.path.exists(default_destdir):
|
||||
print("Found user installation.")
|
||||
rmdir(default_destdir, dryrun)
|
||||
|
||||
|
||||
def rm(path, dryrun):
|
||||
if os.path.exists(path):
|
||||
print("deleting file:", path)
|
||||
if not dryrun:
|
||||
shutil.rmtree(path)
|
||||
|
||||
|
||||
def rmdir(path, dryrun):
|
||||
if os.path.exists(path):
|
||||
print("deleting directory:", path)
|
||||
if not dryrun:
|
||||
shutil.rmtree(path)
|
||||
|
||||
|
||||
def main(args):
|
||||
if args.dryrun:
|
||||
print("Uninstalling autojump (DRYRUN)...")
|
||||
else:
|
||||
print("Uninstalling autojump...")
|
||||
|
||||
remove_user_installation(args.dryrun)
|
||||
remove_system_installation(args.dryrun)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main(parse_arguments()))
|
@ -1,94 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
function help_msg {
|
||||
echo "sudo ./uninstall.sh [--prefix /usr/local]"
|
||||
}
|
||||
|
||||
function remove_msg {
|
||||
echo
|
||||
echo "Please remove the line from .${2}rc :"
|
||||
echo
|
||||
if [ "${1}" == "global" ]; then
|
||||
echo -e "\t[[ -s /etc/profile.d/autojump.${2} ]] && source /etc/profile.d/autojump.${2}"
|
||||
elif [ "${1}" == "local" ]; then
|
||||
echo -e "\t[[ -s ~/.autojump/etc/profile.d/autojump.${2} ]] && source ~/.autojump/etc/profile.d/autojump.${2}"
|
||||
fi
|
||||
echo
|
||||
}
|
||||
|
||||
# Default install directory.
|
||||
prefix=/usr
|
||||
|
||||
user=${SUDO_USER:-${USER}}
|
||||
OS=`uname`
|
||||
|
||||
if [ $OS == 'Darwin' ]; then
|
||||
user_home=$(dscl . -search /Users UniqueID ${user} | cut -d: -f6)
|
||||
else
|
||||
user_home=$(getent passwd ${user} | cut -d: -f6)
|
||||
fi
|
||||
bashrc_file=${user_home}/.bashrc
|
||||
|
||||
# Command line parsing
|
||||
while true; do
|
||||
case "$1" in
|
||||
-h|--help|-\?) help_msg; 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
|
||||
;;
|
||||
--) shift; break;;
|
||||
-*) echo "invalid option: $1" 1>&2; help_msg; exit 1;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
# UNINSTALL AUTOJUMP
|
||||
# global / custom location installations
|
||||
if [ -d "${prefix}/share/autojump/" ]; then
|
||||
echo
|
||||
echo "Uninstalling from ${prefix} ..."
|
||||
echo
|
||||
sudo rm -rv ${prefix}/share/autojump/
|
||||
sudo rm -v ${prefix}/bin/autojump
|
||||
sudo rm -v ${prefix}/share/man/man1/autojump.1
|
||||
sudo rm -v /etc/profile.d/autojump.sh
|
||||
|
||||
if [ -f /etc/profile.d/autojump.bash ]; then
|
||||
sudo rm -v /etc/profile.d/autojump.bash
|
||||
remove_msg "global" "bash"
|
||||
fi
|
||||
|
||||
if [ -f /etc/profile.d/autojump.zsh ]; then
|
||||
sudo rm -v /etc/profile.d/autojump.zsh
|
||||
|
||||
fpath=`/usr/bin/env zsh -c 'echo $fpath'`
|
||||
for f in ${fpath}; do
|
||||
if [[ -f ${f}/_j ]]; then
|
||||
sudo rm -v ${f}/_j
|
||||
fi
|
||||
done
|
||||
|
||||
remove_msg "global" "zsh"
|
||||
fi
|
||||
fi
|
||||
|
||||
# local installations
|
||||
if [ -d ~/.autojump/ ]; then
|
||||
echo
|
||||
echo "Uninstalling from ~/.autojump/ ..."
|
||||
echo
|
||||
|
||||
if [ -f ~/.autojump/etc/profile.d/autojump.bash ]; then
|
||||
rm -rv ~/.autojump/
|
||||
remove_msg "local" "bash"
|
||||
fi
|
||||
if [ -f ~/.autojump/etc/profile.d/autojump.zsh ]; then
|
||||
rm -rv ~/.autojump/
|
||||
remove_msg "local" "zsh"
|
||||
fi
|
||||
fi
|
Loading…
Reference in new issue