diff --git a/bin/autojump b/bin/autojump index d56b2ba..45935b8 100755 --- a/bin/autojump +++ b/bin/autojump @@ -39,24 +39,24 @@ else: from itertools import ifilter from itertools import imap -from data import dictify -from data import entriefy -from data import Entry -from data import load -from data import save -from utils import decode -from utils import encode_local -from utils import first -from utils import get_tab_needle_and_path -from utils import get_pwd -from utils import has_uppercase -from utils import is_osx -from utils import last -from utils import print_entry -from utils import print_tab_menu -from utils import sanitize -from utils import surround_quotes -from utils import take +from autojump_data import dictify +from autojump_data import entriefy +from autojump_data import Entry +from autojump_data import load +from autojump_data import save +from autojump_utils import decode +from autojump_utils import encode_local +from autojump_utils import first +from autojump_utils import get_tab_needle_and_path +from autojump_utils import get_pwd +from autojump_utils import has_uppercase +from autojump_utils import is_osx +from autojump_utils import last +from autojump_utils import print_entry +from autojump_utils import print_tab_menu +from autojump_utils import sanitize +from autojump_utils import surround_quotes +from autojump_utils import take VERSION = '21.8-alpha' FUZZY_MATCH_THRESHOLD = 0.6 diff --git a/bin/data.py b/bin/autojump_data.py similarity index 96% rename from bin/data.py rename to bin/autojump_data.py index 833782a..5a9db61 100644 --- a/bin/data.py +++ b/bin/autojump_data.py @@ -16,10 +16,10 @@ else: from itertools import ifilter from itertools import imap -from utils import create_dir -from utils import is_osx -from utils import is_python3 -from utils import move_file +from autojump_utils import create_dir +from autojump_utils import is_osx +from autojump_utils import is_python3 +from autojump_utils import move_file BACKUP_THRESHOLD = 24 * 60 * 60 diff --git a/bin/utils.py b/bin/autojump_utils.py similarity index 100% rename from bin/utils.py rename to bin/autojump_utils.py diff --git a/uninstall.py b/uninstall.py new file mode 100755 index 0000000..f1d695e --- /dev/null +++ b/uninstall.py @@ -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())) diff --git a/uninstall.sh b/uninstall.sh deleted file mode 100755 index 4154984..0000000 --- a/uninstall.sh +++ /dev/null @@ -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