mirror of
https://github.com/wting/autojump
synced 2024-10-27 20:34:07 +00:00
cleanup, add custom installation support, change default windows install directory
This commit is contained in:
parent
7a756aaa4e
commit
ff9376cb93
@ -75,7 +75,7 @@ def set_defaults():
|
|||||||
'autojump')
|
'autojump')
|
||||||
elif is_windows():
|
elif is_windows():
|
||||||
data_home = os.path.join(
|
data_home = os.path.join(
|
||||||
os.getenv('LOCALAPPDATA'),
|
os.getenv('APPDATA'),
|
||||||
'autojump')
|
'autojump')
|
||||||
else:
|
else:
|
||||||
data_home = os.getenv(
|
data_home = os.getenv(
|
||||||
@ -263,7 +263,7 @@ def match_consecutive(needles, haystack, ignore_case=False):
|
|||||||
(path="/moo/foo/baz", weight=10),
|
(path="/moo/foo/baz", weight=10),
|
||||||
(path="/foo/baz", weight=10)]
|
(path="/foo/baz", weight=10)]
|
||||||
"""
|
"""
|
||||||
sep = os.sep.encode('string-escape')
|
sep = os.sep.replace('\\','\\\\')
|
||||||
regex_no_sep = '[^' + sep + ']*'
|
regex_no_sep = '[^' + sep + ']*'
|
||||||
regex_one_sep = regex_no_sep + sep + regex_no_sep
|
regex_one_sep = regex_no_sep + sep + regex_no_sep
|
||||||
regex_no_sep_end = regex_no_sep + '$'
|
regex_no_sep_end = regex_no_sep + '$'
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
local HOME = clink.get_env("USERPROFILE") .."\\"
|
local AUTOJUMP_BIN = (AUTOJUMP_BIN_DIR or clink.get_env("LOCALAPPDATA") .. "\\autojump\\bin") .. "\\autojump"
|
||||||
local AUTOJUMP_BIN = HOME .. ".autojump\\bin\\autojump"
|
|
||||||
|
|
||||||
function autojump_add_to_database()
|
function autojump_add_to_database()
|
||||||
os.execute("python " .. AUTOJUMP_BIN .. " --add " .. clink.get_cwd())
|
os.execute("python " .. AUTOJUMP_BIN .. " --add " .. clink.get_cwd() .. " 2> " .. clink.get_env("TEMP") .. "\\autojump_error.txt")
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.register_filter(autojump_add_to_database, 99)
|
clink.prompt.register_filter(autojump_add_to_database, 99)
|
||||||
|
79
install.py
79
install.py
@ -42,13 +42,27 @@ def modify_autojump_sh(etc_dir, dryrun=False):
|
|||||||
f.write(custom_install)
|
f.write(custom_install)
|
||||||
|
|
||||||
|
|
||||||
|
def modify_autojump_lua(clink_dir, bin_dir, dryrun=False):
|
||||||
|
"""Prepend custom AUTOJUMP_BIN_DIR definition to autojump.lua"""
|
||||||
|
custom_install = "local AUTOJUMP_BIN_DIR = \"%s\"\n" % bin_dir.replace("\\", "\\\\")
|
||||||
|
clink_file = os.path.join(clink_dir, 'autojump.lua')
|
||||||
|
with open(clink_file, 'r') as f:
|
||||||
|
original = f.read()
|
||||||
|
with open(clink_file, 'w') as f:
|
||||||
|
f.write(custom_install + original)
|
||||||
|
|
||||||
|
|
||||||
def parse_arguments():
|
def parse_arguments():
|
||||||
default_user_destdir = os.path.join(os.path.expanduser("~"), '.autojump')
|
if platform.system() == 'Windows':
|
||||||
|
default_user_destdir = os.path.join(os.getenv('LOCALAPPDATA', ''), 'autojump')
|
||||||
|
else:
|
||||||
|
default_user_destdir = os.path.join(os.path.expanduser("~"), '.autojump')
|
||||||
default_user_prefix = ''
|
default_user_prefix = ''
|
||||||
default_user_zshshare = 'functions'
|
default_user_zshshare = 'functions'
|
||||||
default_system_destdir = '/'
|
default_system_destdir = '/'
|
||||||
default_system_prefix = '/usr/local'
|
default_system_prefix = '/usr/local'
|
||||||
default_system_zshshare = '/usr/share/zsh/site-functions'
|
default_system_zshshare = '/usr/share/zsh/site-functions'
|
||||||
|
default_clink_dir = os.path.join(os.getenv('LOCALAPPDATA', ''), 'clink')
|
||||||
|
|
||||||
parser = ArgumentParser(
|
parser = ArgumentParser(
|
||||||
description='Installs autojump globally for root users, otherwise \
|
description='Installs autojump globally for root users, otherwise \
|
||||||
@ -68,6 +82,9 @@ def parse_arguments():
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-z', '--zshshare', metavar='DIR', default=default_user_zshshare,
|
'-z', '--zshshare', metavar='DIR', default=default_user_zshshare,
|
||||||
help='set zsh share destination to DIR')
|
help='set zsh share destination to DIR')
|
||||||
|
parser.add_argument(
|
||||||
|
'-c', '--clinkdir', metavar='DIR', default=default_clink_dir,
|
||||||
|
help='set clink directory location to DIR (Windows only)')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-s', '--system', action="store_true", default=False,
|
'-s', '--system', action="store_true", default=False,
|
||||||
help='install system wide for all users')
|
help='install system wide for all users')
|
||||||
@ -78,21 +95,20 @@ def parse_arguments():
|
|||||||
if sys.version_info[0] == 2 and sys.version_info[1] < 6:
|
if sys.version_info[0] == 2 and sys.version_info[1] < 6:
|
||||||
print("Python v2.6+ or v3.0+ required.", file=sys.stderr)
|
print("Python v2.6+ or v3.0+ required.", file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if platform.system() != 'Windows':
|
if args.system:
|
||||||
if get_shell() not in SUPPORTED_SHELLS:
|
if platform.system() == 'Windows':
|
||||||
print("Unsupported shell: %s" % os.getenv('SHELL'),
|
|
||||||
file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if args.system and os.geteuid() != 0:
|
|
||||||
print("Please rerun as root for system-wide installation.",
|
|
||||||
file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
else:
|
|
||||||
if args.system:
|
|
||||||
print("System-wide installation is not supported on Windows.",
|
print("System-wide installation is not supported on Windows.",
|
||||||
file=sys.stderr)
|
file=sys.stderr)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
elif os.geteuid() != 0:
|
||||||
|
print("Please rerun as root for system-wide installation.",
|
||||||
|
file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if platform.system() != 'Windows' and get_shell() not in SUPPORTED_SHELLS:
|
||||||
|
print("Unsupported shell: %s" % os.getenv('SHELL'),
|
||||||
|
file=sys.stderr)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
if args.destdir != default_user_destdir \
|
if args.destdir != default_user_destdir \
|
||||||
or args.prefix != default_user_prefix \
|
or args.prefix != default_user_prefix \
|
||||||
@ -115,7 +131,9 @@ def parse_arguments():
|
|||||||
|
|
||||||
|
|
||||||
def print_post_installation_message(etc_dir, bin_dir):
|
def print_post_installation_message(etc_dir, bin_dir):
|
||||||
if platform.system() != 'Windows':
|
if platform.system() == 'Windows':
|
||||||
|
print("\nPlease manually add %s to your user path" % bin_dir)
|
||||||
|
else:
|
||||||
if get_shell() == 'fish':
|
if get_shell() == 'fish':
|
||||||
aj_shell = '%s/autojump.fish' % etc_dir
|
aj_shell = '%s/autojump.fish' % etc_dir
|
||||||
source_msg = "if test -f %s; . %s; end" % (aj_shell, aj_shell)
|
source_msg = "if test -f %s; . %s; end" % (aj_shell, aj_shell)
|
||||||
@ -135,8 +153,6 @@ def print_post_installation_message(etc_dir, bin_dir):
|
|||||||
print('\n\t' + source_msg)
|
print('\n\t' + source_msg)
|
||||||
if get_shell() == 'zsh':
|
if get_shell() == 'zsh':
|
||||||
print("\n\tautoload -U compinit && compinit -u")
|
print("\n\tautoload -U compinit && compinit -u")
|
||||||
else:
|
|
||||||
print("\nPlease manually add %s to your user path" % bin_dir)
|
|
||||||
print("\nPlease restart terminal(s) before running autojump.\n")
|
print("\nPlease restart terminal(s) before running autojump.\n")
|
||||||
|
|
||||||
|
|
||||||
@ -151,19 +167,32 @@ def main(args):
|
|||||||
doc_dir = os.path.join(args.destdir, args.prefix, 'share', 'man', 'man1')
|
doc_dir = os.path.join(args.destdir, args.prefix, 'share', 'man', 'man1')
|
||||||
icon_dir = os.path.join(args.destdir, args.prefix, 'share', 'autojump')
|
icon_dir = os.path.join(args.destdir, args.prefix, 'share', 'autojump')
|
||||||
zshshare_dir = os.path.join(args.destdir, args.zshshare)
|
zshshare_dir = os.path.join(args.destdir, args.zshshare)
|
||||||
clink_dir = os.path.join(os.getenv("LOCALAPPDATA"),'clink')
|
|
||||||
|
|
||||||
mkdir(bin_dir, args.dryrun)
|
mkdir(bin_dir, args.dryrun)
|
||||||
mkdir(etc_dir, args.dryrun)
|
|
||||||
mkdir(doc_dir, args.dryrun)
|
mkdir(doc_dir, args.dryrun)
|
||||||
mkdir(icon_dir, args.dryrun)
|
mkdir(icon_dir, args.dryrun)
|
||||||
mkdir(zshshare_dir, args.dryrun)
|
|
||||||
|
|
||||||
cp('./bin/autojump', bin_dir, args.dryrun)
|
cp('./bin/autojump', bin_dir, args.dryrun)
|
||||||
cp('./bin/autojump_argparse.py', bin_dir, args.dryrun)
|
cp('./bin/autojump_argparse.py', bin_dir, args.dryrun)
|
||||||
cp('./bin/autojump_data.py', bin_dir, args.dryrun)
|
cp('./bin/autojump_data.py', bin_dir, args.dryrun)
|
||||||
cp('./bin/autojump_utils.py', bin_dir, args.dryrun)
|
cp('./bin/autojump_utils.py', bin_dir, args.dryrun)
|
||||||
if platform.system() != 'Windows':
|
cp('./bin/icon.png', icon_dir, args.dryrun)
|
||||||
|
cp('./docs/autojump.1', doc_dir, args.dryrun)
|
||||||
|
|
||||||
|
if platform.system() == 'Windows':
|
||||||
|
cp('./bin/autojump.lua', args.clinkdir, args.dryrun)
|
||||||
|
cp('./bin/autojump.bat', bin_dir, args.dryrun)
|
||||||
|
cp('./bin/j.bat', bin_dir, args.dryrun)
|
||||||
|
cp('./bin/jc.bat', bin_dir, args.dryrun)
|
||||||
|
cp('./bin/jo.bat', bin_dir, args.dryrun)
|
||||||
|
cp('./bin/jco.bat', bin_dir, args.dryrun)
|
||||||
|
|
||||||
|
if args.custom_install:
|
||||||
|
modify_autojump_lua(args.clinkdir, bin_dir, args.dryrun)
|
||||||
|
else:
|
||||||
|
mkdir(etc_dir, args.dryrun)
|
||||||
|
mkdir(zshshare_dir, args.dryrun)
|
||||||
|
|
||||||
cp('./bin/autojump.sh', etc_dir, args.dryrun)
|
cp('./bin/autojump.sh', etc_dir, args.dryrun)
|
||||||
cp('./bin/autojump.bash', etc_dir, args.dryrun)
|
cp('./bin/autojump.bash', etc_dir, args.dryrun)
|
||||||
cp('./bin/autojump.fish', etc_dir, args.dryrun)
|
cp('./bin/autojump.fish', etc_dir, args.dryrun)
|
||||||
@ -172,16 +201,6 @@ def main(args):
|
|||||||
|
|
||||||
if args.custom_install:
|
if args.custom_install:
|
||||||
modify_autojump_sh(etc_dir, args.dryrun)
|
modify_autojump_sh(etc_dir, args.dryrun)
|
||||||
else:
|
|
||||||
cp('./bin/autojump.lua', clink_dir, args.dryrun)
|
|
||||||
cp('./bin/autojump.bat', bin_dir, args.dryrun)
|
|
||||||
cp('./bin/j.bat', bin_dir, args.dryrun)
|
|
||||||
cp('./bin/jc.bat', bin_dir, args.dryrun)
|
|
||||||
cp('./bin/jo.bat', bin_dir, args.dryrun)
|
|
||||||
cp('./bin/jco.bat', bin_dir, args.dryrun)
|
|
||||||
cp('./bin/icon.png', icon_dir, args.dryrun)
|
|
||||||
cp('./docs/autojump.1', doc_dir, args.dryrun)
|
|
||||||
|
|
||||||
|
|
||||||
print_post_installation_message(etc_dir, bin_dir)
|
print_post_installation_message(etc_dir, bin_dir)
|
||||||
|
|
||||||
|
38
uninstall.py
38
uninstall.py
@ -23,6 +23,8 @@ def is_empty_dir(path):
|
|||||||
|
|
||||||
|
|
||||||
def parse_arguments():
|
def parse_arguments():
|
||||||
|
default_clink_dir = os.path.join(os.getenv('LOCALAPPDATA', ''), 'clink')
|
||||||
|
|
||||||
parser = ArgumentParser(
|
parser = ArgumentParser(
|
||||||
description='Uninstalls autojump.')
|
description='Uninstalls autojump.')
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
@ -40,6 +42,8 @@ def parse_arguments():
|
|||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-z', '--zshshare', metavar='DIR', default='functions',
|
'-z', '--zshshare', metavar='DIR', default='functions',
|
||||||
help='custom zshshare')
|
help='custom zshshare')
|
||||||
|
parser.add_argument(
|
||||||
|
'-c', '--clinkdir', metavar='DIR', default=default_clink_dir)
|
||||||
|
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
@ -61,11 +65,21 @@ def remove_custom_installation(args, dryrun=False):
|
|||||||
rm(os.path.join(bin_dir, 'autojump'), dryrun)
|
rm(os.path.join(bin_dir, 'autojump'), dryrun)
|
||||||
rm(os.path.join(bin_dir, 'autojump_data.py'), dryrun)
|
rm(os.path.join(bin_dir, 'autojump_data.py'), dryrun)
|
||||||
rm(os.path.join(bin_dir, 'autojump_utils.py'), dryrun)
|
rm(os.path.join(bin_dir, 'autojump_utils.py'), dryrun)
|
||||||
rm(os.path.join(etc_dir, 'autojump.sh'), dryrun)
|
rm(os.path.join(bin_dir, 'autojump_argparse.py'), dryrun)
|
||||||
rm(os.path.join(etc_dir, 'autojump.bash'), dryrun)
|
if platform.system() == 'Windows':
|
||||||
rm(os.path.join(etc_dir, 'autojump.fish'), dryrun)
|
if os.path.exists(args.clinkdir):
|
||||||
rm(os.path.join(etc_dir, 'autojump.zsh'), dryrun)
|
rm(os.path.join(args.clinkdir, 'autojump.lua'), dryrun)
|
||||||
rm(os.path.join(zshshare_dir, '_j'), dryrun)
|
rm(os.path.join(bin_dir, 'autojump.bat'), dryrun)
|
||||||
|
rm(os.path.join(bin_dir, 'j.bat'), dryrun)
|
||||||
|
rm(os.path.join(bin_dir, 'jc.bat'), dryrun)
|
||||||
|
rm(os.path.join(bin_dir, 'jco.bat'), dryrun)
|
||||||
|
rm(os.path.join(bin_dir, 'jo.bat'), dryrun)
|
||||||
|
else:
|
||||||
|
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)
|
rmdir(icon_dir, dryrun)
|
||||||
rm(os.path.join(doc_dir, 'autojump.1'), dryrun)
|
rm(os.path.join(doc_dir, 'autojump.1'), dryrun)
|
||||||
|
|
||||||
@ -113,7 +127,7 @@ def remove_user_data(dryrun=False):
|
|||||||
'Library',
|
'Library',
|
||||||
'autojump')
|
'autojump')
|
||||||
elif platform.system() == 'Windows':
|
elif platform.system() == 'Windows':
|
||||||
data_home = os.path.join(
|
data_home = os.path.join(
|
||||||
os.getenv('APPDATA'),
|
os.getenv('APPDATA'),
|
||||||
'autojump')
|
'autojump')
|
||||||
else:
|
else:
|
||||||
@ -131,14 +145,16 @@ def remove_user_data(dryrun=False):
|
|||||||
|
|
||||||
|
|
||||||
def remove_user_installation(dryrun=False):
|
def remove_user_installation(dryrun=False):
|
||||||
default_destdir = os.path.join(os.path.expanduser("~"), '.autojump')
|
if platform.system() == 'Windows':
|
||||||
clink_dir = os.path.join(os.getenv("LOCALAPPDATA"),'clink')
|
default_destdir = os.path.join(os.getenv('LOCALAPPDATA', ''), 'autojump')
|
||||||
|
clink_dir = os.path.join(os.getenv('LOCALAPPDATA', ''), 'clink')
|
||||||
|
else:
|
||||||
|
default_destdir = os.path.join(os.path.expanduser("~"), '.autojump')
|
||||||
if os.path.exists(default_destdir):
|
if os.path.exists(default_destdir):
|
||||||
print("\nFound user installation...")
|
print("\nFound user installation...")
|
||||||
rmdir(default_destdir, dryrun)
|
rmdir(default_destdir, dryrun)
|
||||||
if platform.system() == 'Windows':
|
if platform.system() == 'Windows' and os.path.exists(clink_dir):
|
||||||
if os.path.exists(clink_dir):
|
rm(os.path.join(clink_dir, 'autojump.lua'), dryrun)
|
||||||
rm(os.path.join(clink_dir,'autojump.lua'), dryrun)
|
|
||||||
|
|
||||||
|
|
||||||
def rm(path, dryrun):
|
def rm(path, dryrun):
|
||||||
|
Loading…
Reference in New Issue
Block a user