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