xdg 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY +8 -1
- data/MANIFEST +1 -0
- data/RELEASE +18 -7
- data/VERSION +1 -1
- data/lib/xdg.rb +99 -51
- data/test/test_xdg.rb +48 -27
- metadata +17 -25
data/HISTORY
CHANGED
@@ -1,4 +1,11 @@
|
|
1
|
-
|
1
|
+
= CHANGE HISTORY
|
2
|
+
|
3
|
+
=== 0.4.0 / 2008-10-26
|
4
|
+
|
5
|
+
* Renamed instance level methods without 'xdg_' prefix.
|
6
|
+
* Replace _file methods with _find and _glob methods.
|
7
|
+
|
8
|
+
=== 0.3.0 / 2008-09-11
|
2
9
|
|
3
10
|
* Renamed module level methods without 'xdg_' prefix.
|
4
11
|
* The xdg_ versions still exist for backward compatibility.
|
data/MANIFEST
CHANGED
data/RELEASE
CHANGED
@@ -1,10 +1,21 @@
|
|
1
|
-
|
2
|
-
method names. The instance methods retain the xdg_ prefix.
|
3
|
-
I will consider if they should also be removed for the
|
4
|
-
next release.
|
1
|
+
= XDG 0.4 hits the streets!
|
5
2
|
|
6
|
-
|
3
|
+
http://xdg.rubyforge.org
|
7
4
|
|
8
|
-
|
9
|
-
|
5
|
+
This release removes the xdg_ prefix from the instance-level
|
6
|
+
method names. Now module and instance levels are the same.
|
7
|
+
|
8
|
+
Also, data_file, config_file and cache_file have been replaced with
|
9
|
+
data_find, config_find, cache_find, data_glob, config_glob and
|
10
|
+
cache_glob.
|
11
|
+
|
12
|
+
What' next? Well, I can't say I'm fond of the term 'glob', so I
|
13
|
+
may rename that to 'map' or 'collect' (or 'select'?) and then
|
14
|
+
add the ability to use blocks for matching too.
|
15
|
+
|
16
|
+
|
17
|
+
### 0.4.0 / 2008-10-26
|
18
|
+
|
19
|
+
* Renamed instance level methods without 'xdg_' prefix.
|
20
|
+
* Replace _file methods with _find and _glob methods.
|
10
21
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
xdg 0.
|
1
|
+
xdg 0.4.0 beta (2008-10-26)
|
data/lib/xdg.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
# :Copyright: (c)2008 Tiger Ops
|
4
4
|
# :License: GPLv3
|
5
5
|
|
6
|
-
|
7
6
|
# = XDG Base Directory Standard
|
8
7
|
#
|
9
8
|
# This provides a conveient library for conforming to the
|
@@ -32,19 +31,21 @@
|
|
32
31
|
|
33
32
|
module XDG
|
34
33
|
|
35
|
-
|
34
|
+
extend self #module_function
|
35
|
+
|
36
|
+
def home
|
36
37
|
ENV['HOME'] || File.expand_path('~')
|
37
38
|
end
|
38
39
|
|
39
40
|
# Location of user's personal config directory.
|
40
|
-
def
|
41
|
+
def config_home
|
41
42
|
File.expand_path(
|
42
|
-
ENV['XDG_CONFIG_HOME'] || File.join(
|
43
|
+
ENV['XDG_CONFIG_HOME'] || File.join(home, '.config')
|
43
44
|
)
|
44
45
|
end
|
45
46
|
|
46
47
|
# List of user's shared config directories.
|
47
|
-
def
|
48
|
+
def config_dirs
|
48
49
|
dirs = ENV['XDG_CONFIG_DIRS'].to_s.split(/[:;]/)
|
49
50
|
if dirs.empty?
|
50
51
|
dirs = %w{/etc/xdg}
|
@@ -53,14 +54,14 @@ module XDG
|
|
53
54
|
end
|
54
55
|
|
55
56
|
# Location of user's personal data directory.
|
56
|
-
def
|
57
|
+
def data_home
|
57
58
|
File.expand_path(
|
58
|
-
ENV['XDG_DATA_HOME'] || File.join(
|
59
|
+
ENV['XDG_DATA_HOME'] || File.join(home, '.local', 'share')
|
59
60
|
)
|
60
61
|
end
|
61
62
|
|
62
63
|
# List of user's shared data directores.
|
63
|
-
def
|
64
|
+
def data_dirs
|
64
65
|
dirs = ENV['XDG_DATA_DIRS'].split(/[:;]/)
|
65
66
|
if dirs.empty?
|
66
67
|
dirs = %w{/usr/local/share/ /usr/share/}
|
@@ -69,85 +70,132 @@ module XDG
|
|
69
70
|
end
|
70
71
|
|
71
72
|
# Location of user's personal cache directory.
|
72
|
-
def
|
73
|
+
def cache_home
|
73
74
|
File.expand_path(
|
74
|
-
ENV['XDG_CACHE_HOME'] || File.join(
|
75
|
+
ENV['XDG_CACHE_HOME'] || File.join(home, '.cache')
|
75
76
|
)
|
76
77
|
end
|
77
78
|
|
78
79
|
# Find a file or directory in data dirs.
|
79
|
-
def
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
80
|
+
def data_find(*glob_and_flags)
|
81
|
+
data_glob(*glob_and_flags).first
|
82
|
+
end
|
83
|
+
|
84
|
+
def data_glob(*glob_and_flags)
|
85
|
+
glob, flags = *glob_and_flags.partition{ |e| String===e }
|
86
|
+
flag = flags.inject(0) do |m, f|
|
87
|
+
if Symbol === f
|
88
|
+
m + File::const_get("FNM_#{f.to_s.upcase}")
|
89
|
+
else
|
90
|
+
m + f.to_i
|
91
|
+
end
|
92
|
+
end
|
93
|
+
find = []
|
94
|
+
[data_home, *data_dirs].each do |dir|
|
95
|
+
path = File.join(dir, *glob)
|
96
|
+
find.concat(Dir.glob(path, flag))
|
84
97
|
end
|
85
98
|
find
|
86
99
|
end
|
87
100
|
|
88
|
-
#
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
101
|
+
# Return the fist matching file or directory
|
102
|
+
# from the config locations.
|
103
|
+
#
|
104
|
+
# See +config_glog+.
|
105
|
+
def config_find(*glob_and_flags)
|
106
|
+
config_glob(*glob_and_flags).first
|
107
|
+
end
|
108
|
+
|
109
|
+
# Return array of matching files or directories
|
110
|
+
# in any of the config locations.
|
111
|
+
#
|
112
|
+
# This starts with the user's home directory
|
113
|
+
# and then searches system directories.
|
114
|
+
#
|
115
|
+
# String parameters are joined into a pathname
|
116
|
+
# while Integers and Symbols treated as flags.
|
117
|
+
#
|
118
|
+
# For example, the following are equivalent:
|
119
|
+
#
|
120
|
+
# XDG.config_glob('sow/plugins', File::FNM_CASEFOLD)
|
121
|
+
#
|
122
|
+
# XDG.config_glob('sow', 'plugins', :casefold)
|
123
|
+
#
|
124
|
+
def config_glob(*glob_and_flags)
|
125
|
+
glob, flags = *glob_and_flags.partition{ |e| String===e }
|
126
|
+
flag = flags.inject(0) do |m, f|
|
127
|
+
if Symbol === f
|
128
|
+
m + File::const_get("FNM_#{f.to_s.upcase}")
|
129
|
+
else
|
130
|
+
m + f.to_i
|
131
|
+
end
|
132
|
+
end
|
133
|
+
find = []
|
134
|
+
[config_home, *config_dirs].each do |dir|
|
135
|
+
path = File.join(dir, *glob)
|
136
|
+
find.concat(Dir.glob(path, flag))
|
94
137
|
end
|
95
138
|
find
|
96
139
|
end
|
97
140
|
|
98
|
-
#
|
99
|
-
|
100
|
-
|
101
|
-
|
141
|
+
# Return the fist matching file or directory
|
142
|
+
# in the cache directory.
|
143
|
+
#
|
144
|
+
# See +cache_glog+.
|
145
|
+
def cache_find(*glob_and_flags)
|
146
|
+
cache_glob(*glob_and_flags).first
|
147
|
+
end
|
148
|
+
|
149
|
+
# Return array of matching files or directories
|
150
|
+
# from the cache directory.
|
151
|
+
#
|
152
|
+
# String parameters are joined into a pathname
|
153
|
+
# while Integers and Symbols treated as flags.
|
154
|
+
#
|
155
|
+
# For example, the following are equivalent:
|
156
|
+
#
|
157
|
+
# XDG.cache_glob('sow/tmp', File::FNM_CASEFOLD)
|
158
|
+
#
|
159
|
+
# XDG.cache_glob('sow', 'tmp', :casefold)
|
160
|
+
#
|
161
|
+
def cache_glob(*glob_and_flags)
|
162
|
+
glob, flags = *glob_and_flags.partition{ |e| String===e }
|
163
|
+
flag = flags.inject(0) do |m, f|
|
164
|
+
if Symbol === f
|
165
|
+
m + File::const_get("FNM_#{f.to_s.upcase}")
|
166
|
+
else
|
167
|
+
m + f.to_i
|
168
|
+
end
|
169
|
+
end
|
170
|
+
path = File.join(cache_home,*glob)
|
171
|
+
Dir.glob(path, flag)
|
102
172
|
end
|
103
173
|
|
104
174
|
#--
|
105
175
|
# The following are not strictly XDG spec,
|
106
|
-
# but are useful in
|
176
|
+
# but are useful in a similar respect.
|
107
177
|
#++
|
108
178
|
|
109
179
|
# Location of working config directory.
|
110
|
-
def
|
180
|
+
def config_work
|
111
181
|
File.expand_path(
|
112
|
-
#ENV['XDG_CONFIG_WORK'] || File.join(Dir.pwd, '.config')
|
113
182
|
File.join(Dir.pwd, '.config')
|
114
183
|
)
|
115
184
|
end
|
116
185
|
|
117
186
|
# Location of working data directory.
|
118
|
-
def
|
187
|
+
def data_work
|
119
188
|
File.expand_path(
|
120
|
-
#ENV['XDG_DATA_WORK'] || File.join(Dir.pwd, '.share')
|
121
189
|
File.join(Dir.pwd, '.share')
|
122
190
|
)
|
123
191
|
end
|
124
192
|
|
125
193
|
# Location of working cache directory.
|
126
|
-
def
|
194
|
+
def cache_work
|
127
195
|
File.expand_path(
|
128
|
-
#ENV['XDG_CACHE_WORK'] || File.join(Dir.pwd, '.cache')
|
129
196
|
File.join(Dir.pwd, '.cache')
|
130
197
|
)
|
131
198
|
end
|
132
199
|
|
133
|
-
###############
|
134
|
-
module_function
|
135
|
-
###############
|
136
|
-
|
137
|
-
def xdg_home ; XDG.home ; end
|
138
|
-
def xdg_config_home ; XDG.config_home ; end
|
139
|
-
def xdg_config_dirs ; XDG.config_dirs ; end
|
140
|
-
def xdg_data_home ; XDG.data_home ; end
|
141
|
-
def xdg_data_dirs ; XDG.data_dirs ; end
|
142
|
-
def xdg_cache_home ; XDG.cache_home ; end
|
143
|
-
|
144
|
-
def xdg_data_file(file) ; XDG.data_file(file) ; end
|
145
|
-
def xdg_config_file(file) ; XDG.config_file(file) ; end
|
146
|
-
def xdg_cache_file(file) ; XDG.cache_file(file) ; end
|
147
|
-
|
148
|
-
def xdg_config_work ; XDG.config_work ; end
|
149
|
-
def xdg_data_work ; XDG.data_work ; end
|
150
|
-
def xdg_cache_work ; XDG.cache_work ; end
|
151
|
-
|
152
200
|
end # module XDG
|
153
201
|
|
data/test/test_xdg.rb
CHANGED
@@ -13,63 +13,84 @@ class TestXDG < Test::Unit::TestCase
|
|
13
13
|
|
14
14
|
# Test the standard paths.
|
15
15
|
|
16
|
-
def
|
17
|
-
assert_equal(File.join(Dir.pwd,'home'), XDG.
|
16
|
+
def test_home
|
17
|
+
assert_equal(File.join(Dir.pwd,'home'), XDG.home)
|
18
18
|
end
|
19
19
|
|
20
|
-
def
|
21
|
-
assert_equal(File.join(Dir.pwd,'home/.config'), XDG.
|
20
|
+
def test_config_home
|
21
|
+
assert_equal(File.join(Dir.pwd,'home/.config'), XDG.config_home)
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
25
|
-
assert_equal([File.join(Dir.pwd,"etc/xdg")], XDG.
|
24
|
+
def test_config_dirs
|
25
|
+
assert_equal([File.join(Dir.pwd,"etc/xdg")], XDG.config_dirs)
|
26
26
|
end
|
27
27
|
|
28
|
-
def
|
29
|
-
assert_equal(File.join(Dir.pwd,'home/.local/share'), XDG.
|
28
|
+
def test_data_home
|
29
|
+
assert_equal(File.join(Dir.pwd,'home/.local/share'), XDG.data_home)
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
assert_equal([File.join(Dir.pwd,'usr/share')], XDG.
|
32
|
+
def test_data_dirs
|
33
|
+
assert_equal([File.join(Dir.pwd,'usr/share')], XDG.data_dirs)
|
34
34
|
end
|
35
35
|
|
36
|
-
def
|
37
|
-
assert_equal(File.join(Dir.pwd,'home/.cache'), XDG.
|
36
|
+
def test_cache_home
|
37
|
+
assert_equal(File.join(Dir.pwd,'home/.cache'), XDG.cache_home)
|
38
38
|
end
|
39
39
|
|
40
|
-
# Test the
|
40
|
+
# Test the find methods.
|
41
41
|
|
42
|
-
def
|
42
|
+
def test_data_find
|
43
43
|
file = 'foo.dat'
|
44
|
-
assert_equal(File.join(Dir.pwd,'home/.local/share', file), XDG.
|
44
|
+
assert_equal(File.join(Dir.pwd,'home/.local/share', file), XDG.data_find(file))
|
45
45
|
file = 'bar.dat'
|
46
|
-
assert_equal(File.join(Dir.pwd,'usr/share', file), XDG.
|
46
|
+
assert_equal(File.join(Dir.pwd,'usr/share', file), XDG.data_find(file))
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
49
|
+
def test_config_find
|
50
50
|
file = 'foo.config'
|
51
|
-
assert_equal(File.join(Dir.pwd,'home/.config', file), XDG.
|
51
|
+
assert_equal(File.join(Dir.pwd,'home/.config', file), XDG.config_find(file))
|
52
52
|
file = 'bar.config'
|
53
|
-
assert_equal(File.join(Dir.pwd,'etc/xdg', file), XDG.
|
53
|
+
assert_equal(File.join(Dir.pwd,'etc/xdg', file), XDG.config_find(file))
|
54
54
|
end
|
55
55
|
|
56
|
-
def
|
56
|
+
def test_cache_find
|
57
57
|
file = 'foo.cache'
|
58
|
-
assert_equal(File.join(Dir.pwd,'home/.cache', file), XDG.
|
58
|
+
assert_equal(File.join(Dir.pwd,'home/.cache', file), XDG.cache_find(file))
|
59
|
+
end
|
60
|
+
|
61
|
+
# Test the glob methods.
|
62
|
+
|
63
|
+
def test_data_glob
|
64
|
+
file = 'foo.dat'
|
65
|
+
assert_equal(File.join(Dir.pwd,'home/.local/share', file), XDG.data_find(file))
|
66
|
+
file = 'bar.dat'
|
67
|
+
assert_equal([File.join(Dir.pwd,'usr/share', file)], XDG.data_glob(file))
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_config_glob
|
71
|
+
file = 'foo.config'
|
72
|
+
assert_equal([File.join(Dir.pwd,'home/.config', file)], XDG.config_glob(file))
|
73
|
+
file = 'bar.config'
|
74
|
+
assert_equal([File.join(Dir.pwd,'etc/xdg', file)], XDG.config_glob(file))
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_cache_glob
|
78
|
+
file = 'foo.cache'
|
79
|
+
assert_equal([File.join(Dir.pwd,'home/.cache', file)], XDG.cache_glob(file))
|
59
80
|
end
|
60
81
|
|
61
82
|
# Test the working directory variations.
|
62
83
|
|
63
|
-
def
|
64
|
-
assert_equal(File.join(Dir.pwd,'.config'), XDG.
|
84
|
+
def test_config_work
|
85
|
+
assert_equal(File.join(Dir.pwd,'.config'), XDG.config_work)
|
65
86
|
end
|
66
87
|
|
67
|
-
def
|
68
|
-
assert_equal(File.join(Dir.pwd,'.share'), XDG.
|
88
|
+
def test_data_work
|
89
|
+
assert_equal(File.join(Dir.pwd,'.share'), XDG.data_work)
|
69
90
|
end
|
70
91
|
|
71
|
-
def
|
72
|
-
assert_equal(File.join(Dir.pwd,'.cache'), XDG.
|
92
|
+
def test_cache_work
|
93
|
+
assert_equal(File.join(Dir.pwd,'.cache'), XDG.cache_work)
|
73
94
|
end
|
74
95
|
|
75
96
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xdg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tigerops-community@rubyforge.org
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2008-10-
|
13
|
+
date: 2008-10-26 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies: []
|
16
16
|
|
@@ -28,21 +28,16 @@ extra_rdoc_files:
|
|
28
28
|
- VERSION
|
29
29
|
- COPYING
|
30
30
|
files:
|
31
|
-
-
|
31
|
+
- lib
|
32
|
+
- meta
|
32
33
|
- test
|
33
|
-
-
|
34
|
-
- test/fakeroot/home
|
35
|
-
- test/fakeroot/usr
|
36
|
-
- test/fakeroot/usr/share
|
37
|
-
- test/fakeroot/usr/share/bar.dat
|
38
|
-
- test/fakeroot/etc
|
39
|
-
- test/fakeroot/etc/xdg
|
40
|
-
- test/fakeroot/etc/xdg/bar.config
|
41
|
-
- test/test_xdg.rb
|
34
|
+
- MANIFEST
|
42
35
|
- RELEASE
|
43
36
|
- README
|
44
37
|
- HISTORY
|
45
|
-
-
|
38
|
+
- VERSION
|
39
|
+
- COPYING
|
40
|
+
- lib/xdg.rb
|
46
41
|
- meta/homepage
|
47
42
|
- meta/summary
|
48
43
|
- meta/abstract
|
@@ -50,10 +45,15 @@ files:
|
|
50
45
|
- meta/title
|
51
46
|
- meta/authors
|
52
47
|
- meta/contact
|
53
|
-
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
-
|
48
|
+
- test/fakeroot
|
49
|
+
- test/test_xdg.rb
|
50
|
+
- test/fakeroot/home
|
51
|
+
- test/fakeroot/usr
|
52
|
+
- test/fakeroot/etc
|
53
|
+
- test/fakeroot/usr/share
|
54
|
+
- test/fakeroot/usr/share/bar.dat
|
55
|
+
- test/fakeroot/etc/xdg
|
56
|
+
- test/fakeroot/etc/xdg/bar.config
|
57
57
|
has_rdoc: true
|
58
58
|
homepage: http://xdg.rubyforge.org
|
59
59
|
post_install_message:
|
@@ -85,12 +85,4 @@ signing_key:
|
|
85
85
|
specification_version: 2
|
86
86
|
summary: XDG provides a module for supporting the XDG Base Directory Standard.
|
87
87
|
test_files:
|
88
|
-
- test/fakeroot
|
89
|
-
- test/fakeroot/home
|
90
|
-
- test/fakeroot/usr
|
91
|
-
- test/fakeroot/usr/share
|
92
|
-
- test/fakeroot/usr/share/bar.dat
|
93
|
-
- test/fakeroot/etc
|
94
|
-
- test/fakeroot/etc/xdg
|
95
|
-
- test/fakeroot/etc/xdg/bar.config
|
96
88
|
- test/test_xdg.rb
|