Skip to content

Commit 2f9c750

Browse files
committed
Use ~/.config only if $XDG_CONFIG_HOME is unset or empty
1 parent 1817523 commit 2f9c750

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

lib/optparse.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2049,10 +2049,16 @@ def load(filename = nil, **keywords)
20492049
basename = File.basename($0, '.*')
20502050
return true if load(File.expand_path("~/.options/#{basename}"), **keywords) rescue nil
20512051
basename << ".options"
2052+
if !(xdg = ENV['XDG_CONFIG_HOME']) or xdg.empty?
2053+
# https://specifications.freedesktop.org/basedir-spec/latest/#variables
2054+
#
2055+
# If $XDG_CONFIG_HOME is either not set or empty, a default
2056+
# equal to $HOME/.config should be used.
2057+
xdg = ['~/.config', true]
2058+
end
20522059
return [
2053-
# XDG
2054-
ENV['XDG_CONFIG_HOME'],
2055-
['~/.config', true],
2060+
xdg,
2061+
20562062
*ENV['XDG_CONFIG_DIRS']&.split(File::PATH_SEPARATOR),
20572063

20582064
# Haiku

test/optparse/test_load.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def setup_options(env, dir, suffix = nil)
4747
begin
4848
yield dir, optdir
4949
ensure
50-
File.unlink(file)
50+
File.unlink(file) rescue nil
5151
Dir.rmdir(optdir) rescue nil
5252
end
5353
else
@@ -101,7 +101,7 @@ def test_load_home_options
101101
end
102102

103103
def test_load_xdg_config_home
104-
result, = setup_options_xdg_config_home
104+
result, dir = setup_options_xdg_config_home
105105
assert_load(result)
106106

107107
setup_options_home_config do
@@ -115,6 +115,11 @@ def test_load_xdg_config_home
115115
setup_options_home_config_settings do
116116
assert_load(result)
117117
end
118+
119+
File.unlink("#{dir}/#{@basename}.options")
120+
setup_options_home_config do
121+
assert_load_nothing
122+
end
118123
end
119124

120125
def test_load_home_config
@@ -128,6 +133,11 @@ def test_load_home_config
128133
setup_options_home_config_settings do
129134
assert_load(result)
130135
end
136+
137+
setup_options_xdg_config_home do |_, dir|
138+
File.unlink("#{dir}/#{@basename}.options")
139+
assert_load_nothing
140+
end
131141
end
132142

133143
def test_load_xdg_config_dirs

0 commit comments

Comments
 (0)