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():
|
def set_defaults():
|
||||||
config = {}
|
config = {}
|
||||||
|
|
||||||
if is_osx():
|
if is_windows():
|
||||||
data_home = os.path.join(os.path.expanduser('~'), 'Library')
|
|
||||||
elif is_windows():
|
|
||||||
data_home = os.getenv('APPDATA')
|
data_home = os.getenv('APPDATA')
|
||||||
else:
|
else:
|
||||||
data_home = os.getenv(
|
data_home = os.getenv('XDG_DATA_HOME')
|
||||||
'XDG_DATA_HOME',
|
if data_home is None:
|
||||||
os.path.join(
|
user_home = os.path.expanduser('~')
|
||||||
os.path.expanduser('~'),
|
if is_osx() and os.getenv('AUTOJUMP_DARWIN_XDG', '0') == '0':
|
||||||
'.local',
|
data_home = os.path.join(user_home, 'Library')
|
||||||
'share',
|
else:
|
||||||
),
|
data_home = os.path.join(user_home, '.local', 'share')
|
||||||
)
|
|
||||||
config['data_path'] = os.path.join(data_home, 'autojump', 'autojump.txt')
|
config['data_path'] = os.path.join(data_home, 'autojump', 'autojump.txt')
|
||||||
config['backup_path'] = os.path.join(data_home, 'autojump', 'autojump.txt.bak')
|
config['backup_path'] = os.path.join(data_home, 'autojump', 'autojump.txt.bak')
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# set error file location
|
# 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
|
export AUTOJUMP_ERROR_PATH=~/Library/autojump/errors.log
|
||||||
elif [[ -n "${XDG_DATA_HOME}" ]]; then
|
elif [[ -n "${XDG_DATA_HOME}" ]]; then
|
||||||
export AUTOJUMP_ERROR_PATH="${XDG_DATA_HOME}/autojump/errors.log"
|
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
|
# 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
|
set -gx AUTOJUMP_ERROR_PATH ~/Library/autojump/errors.log
|
||||||
else if test -d "$XDG_DATA_HOME"
|
else if test -d "$XDG_DATA_HOME"
|
||||||
set -gx AUTOJUMP_ERROR_PATH $XDG_DATA_HOME/autojump/errors.log
|
set -gx AUTOJUMP_ERROR_PATH $XDG_DATA_HOME/autojump/errors.log
|
||||||
|
@ -19,7 +19,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# set error file location
|
# 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
|
export AUTOJUMP_ERROR_PATH=~/Library/autojump/errors.log
|
||||||
elif [[ -n "${XDG_DATA_HOME}" ]]; then
|
elif [[ -n "${XDG_DATA_HOME}" ]]; then
|
||||||
export AUTOJUMP_ERROR_PATH="${XDG_DATA_HOME}/autojump/errors.log"
|
export AUTOJUMP_ERROR_PATH="${XDG_DATA_HOME}/autojump/errors.log"
|
||||||
|
@ -51,16 +51,6 @@ def entriefy(data):
|
|||||||
|
|
||||||
def load(config):
|
def load(config):
|
||||||
"""Returns a dictonary (key=path, value=weight) loaded from data file."""
|
"""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']):
|
if not os.path.exists(config['data_path']):
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
@ -95,29 +85,6 @@ def load_backup(config):
|
|||||||
return {}
|
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):
|
def save(config, data):
|
||||||
"""Save data and create backup, creating a new data file if necessary."""
|
"""Save data and create backup, creating a new data file if necessary."""
|
||||||
data_dir = os.path.dirname(config['data_path'])
|
data_dir = os.path.dirname(config['data_path'])
|
||||||
|
Loading…
Reference in New Issue
Block a user