mirror of
https://github.com/wting/autojump
synced 2024-10-27 20:34:07 +00:00
feat: add support for respecting $XDG_DATA_HOME and $AUTOJUMP_DARWIN_XDG on macOS
- respecting a new env `$AUTOJUMP_DARWIN_XDG`: If `$XDG_DATA_HOME` is set, use it as the autojump's data home; else if the OS is macOS and `$AUTOJUMP_DARWIN_XDG` is false, use ~/Library (for compatibility); otherwise, use XDG's fallback path (i.e., `~/.local/share`). - remove `migrate_osx_xdg_data( )` in autojump_data.py - related issue: #447
This commit is contained in:
parent
06e082c918
commit
e1518de91f
20
bin/autojump
20
bin/autojump
@ -74,19 +74,17 @@ TAB_SEPARATOR = '__'
|
||||
def set_defaults():
|
||||
config = {}
|
||||
|
||||
if is_osx():
|
||||
data_home = os.path.join(os.path.expanduser('~'), 'Library')
|
||||
elif is_windows():
|
||||
if is_windows():
|
||||
data_home = os.getenv('APPDATA')
|
||||
else:
|
||||
data_home = os.getenv(
|
||||
'XDG_DATA_HOME',
|
||||
os.path.join(
|
||||
os.path.expanduser('~'),
|
||||
'.local',
|
||||
'share',
|
||||
),
|
||||
)
|
||||
data_home = os.getenv('XDG_DATA_HOME')
|
||||
if data_home is None:
|
||||
user_home = os.path.expanduser('~')
|
||||
if is_osx() and os.getenv('AUTOJUMP_DARWIN_XDG', '0') == '0':
|
||||
data_home = os.path.join(user_home, 'Library')
|
||||
else:
|
||||
data_home = os.path.join(user_home, '.local', 'share')
|
||||
|
||||
config['data_path'] = os.path.join(data_home, 'autojump', 'autojump.txt')
|
||||
config['backup_path'] = os.path.join(data_home, 'autojump', 'autojump.txt.bak')
|
||||
|
||||
|
@ -7,7 +7,7 @@ fi
|
||||
|
||||
|
||||
# set error file location
|
||||
if [[ "$(uname)" == "Darwin" ]]; then
|
||||
if [[ "$(uname)" == "Darwin" && "${AUTOJUMP_DARWIN_XDG:-0}" == "0" ]]; then
|
||||
export AUTOJUMP_ERROR_PATH=~/Library/autojump/errors.log
|
||||
elif [[ -n "${XDG_DATA_HOME}" ]]; then
|
||||
export AUTOJUMP_ERROR_PATH="${XDG_DATA_HOME}/autojump/errors.log"
|
||||
|
@ -16,7 +16,7 @@ complete -x -c j -a '(autojump --complete (commandline -t))'
|
||||
|
||||
|
||||
# set error file location
|
||||
if test (uname) = "Darwin"
|
||||
if test (uname) = "Darwin"; begin; not set -q AUTOJUMP_DARWIN_XDG; or test "$AUTOJUMP_DARWIN_XDG" = "0"; end
|
||||
set -gx AUTOJUMP_ERROR_PATH ~/Library/autojump/errors.log
|
||||
else if test -d "$XDG_DATA_HOME"
|
||||
set -gx AUTOJUMP_ERROR_PATH $XDG_DATA_HOME/autojump/errors.log
|
||||
|
@ -19,7 +19,7 @@ fi
|
||||
|
||||
|
||||
# set error file location
|
||||
if [[ "$(uname)" == "Darwin" ]]; then
|
||||
if [[ "$(uname)" == "Darwin" && "${AUTOJUMP_DARWIN_XDG:-0}" == "0" ]]; then
|
||||
export AUTOJUMP_ERROR_PATH=~/Library/autojump/errors.log
|
||||
elif [[ -n "${XDG_DATA_HOME}" ]]; then
|
||||
export AUTOJUMP_ERROR_PATH="${XDG_DATA_HOME}/autojump/errors.log"
|
||||
|
@ -51,16 +51,6 @@ def entriefy(data):
|
||||
|
||||
def load(config):
|
||||
"""Returns a dictonary (key=path, value=weight) loaded from data file."""
|
||||
xdg_aj_home = os.path.join(
|
||||
os.path.expanduser('~'),
|
||||
'.local',
|
||||
'share',
|
||||
'autojump',
|
||||
)
|
||||
|
||||
if is_osx() and os.path.exists(xdg_aj_home):
|
||||
migrate_osx_xdg_data(config)
|
||||
|
||||
if not os.path.exists(config['data_path']):
|
||||
return {}
|
||||
|
||||
@ -95,29 +85,6 @@ def load_backup(config):
|
||||
return {}
|
||||
|
||||
|
||||
def migrate_osx_xdg_data(config):
|
||||
"""
|
||||
Older versions incorrectly used Linux XDG_DATA_HOME paths on OS X. This
|
||||
migrates autojump files from ~/.local/share/autojump to ~/Library/autojump
|
||||
"""
|
||||
assert is_osx(), 'This function should only be run on OS X.'
|
||||
|
||||
xdg_data_home = os.path.join(os.path.expanduser('~'), '.local', 'share')
|
||||
xdg_aj_home = os.path.join(xdg_data_home, 'autojump')
|
||||
data_path = os.path.join(xdg_aj_home, 'autojump.txt')
|
||||
backup_path = os.path.join(xdg_aj_home, 'autojump.txt.bak')
|
||||
|
||||
if os.path.exists(data_path):
|
||||
move_file(data_path, config['data_path'])
|
||||
if os.path.exists(backup_path):
|
||||
move_file(backup_path, config['backup_path'])
|
||||
|
||||
# cleanup
|
||||
shutil.rmtree(xdg_aj_home)
|
||||
if len(os.listdir(xdg_data_home)) == 0:
|
||||
shutil.rmtree(xdg_data_home)
|
||||
|
||||
|
||||
def save(config, data):
|
||||
"""Save data and create backup, creating a new data file if necessary."""
|
||||
data_dir = os.path.dirname(config['data_path'])
|
||||
|
Loading…
Reference in New Issue
Block a user