xdg 0.1.0 → 0.3.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 +5 -0
- data/MANIFEST +11 -3
- data/README +33 -11
- data/RELEASE +8 -3
- data/VERSION +1 -1
- data/lib/xdg.rb +48 -28
- data/meta/abstract +3 -1
- data/meta/title +1 -0
- data/test/fakeroot/etc/xdg/bar.config +1 -0
- data/test/fakeroot/usr/share/bar.dat +1 -0
- data/test/test_xdg.rb +76 -0
- metadata +28 -15
- data/doc/book/basedir-spec-0.6.html +0 -138
data/HISTORY
ADDED
data/MANIFEST
CHANGED
@@ -1,14 +1,22 @@
|
|
1
|
-
doc
|
2
|
-
doc/book
|
3
|
-
doc/book/basedir-spec-0.6.html
|
4
1
|
test
|
2
|
+
test/fakeroot
|
3
|
+
test/fakeroot/home
|
4
|
+
test/fakeroot/usr
|
5
|
+
test/fakeroot/usr/share
|
6
|
+
test/fakeroot/usr/share/bar.dat
|
7
|
+
test/fakeroot/etc
|
8
|
+
test/fakeroot/etc/xdg
|
9
|
+
test/fakeroot/etc/xdg/bar.config
|
10
|
+
test/test_xdg.rb
|
5
11
|
RELEASE
|
6
12
|
README
|
13
|
+
HISTORY
|
7
14
|
meta
|
8
15
|
meta/homepage
|
9
16
|
meta/summary
|
10
17
|
meta/abstract
|
11
18
|
meta/releases
|
19
|
+
meta/title
|
12
20
|
meta/authors
|
13
21
|
meta/contact
|
14
22
|
lib
|
data/README
CHANGED
@@ -1,29 +1,51 @@
|
|
1
|
-
= XDG
|
1
|
+
= XDG Base Directory Standards for Ruby
|
2
|
+
|
3
|
+
http://xdg.rubyforge.org
|
4
|
+
|
5
|
+
== Introduction
|
2
6
|
|
3
7
|
XDG provides an easy to use interface for utilizing
|
4
|
-
the XDG Base
|
8
|
+
the XDG Base Directory Standards.
|
9
|
+
|
10
|
+
See: http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html
|
11
|
+
|
12
|
+
== Release Notes
|
13
|
+
|
14
|
+
Please see the RELEASE file.
|
5
15
|
|
6
16
|
== Usage
|
7
17
|
|
8
|
-
XDG is a module with a small set of easy to
|
9
|
-
module methods, so it very easy to use.
|
18
|
+
XDG is a module with a small set of easy to use methods:
|
10
19
|
|
11
|
-
|
20
|
+
XDG.config_home
|
21
|
+
XDG.config_dirs
|
22
|
+
XDG.data_home
|
23
|
+
XDG.data_dirs
|
24
|
+
XDG.cache_home
|
25
|
+
|
26
|
+
XDG.data_file(file)
|
27
|
+
XDG.config_file(file)
|
28
|
+
XDG.cache_file(file)
|
29
|
+
|
30
|
+
XDG.config_work
|
31
|
+
XDG.data_work
|
32
|
+
XDG.cache_work
|
33
|
+
|
34
|
+
If you know XDG these are pretty much self-explanitory.
|
35
|
+
But see the RDocs for specifics.
|
12
36
|
|
13
37
|
== Installation
|
14
38
|
|
15
|
-
|
39
|
+
Using RubyGems:
|
16
40
|
|
17
41
|
$ gem install xdg
|
18
42
|
|
19
|
-
=== Tarball
|
20
|
-
|
21
43
|
Installing the tarball requires Ruby Setup
|
22
44
|
(see http://setup.rubyforge.org).
|
23
45
|
|
24
|
-
$ tar -xvzf xdg-0.1
|
25
|
-
$ cd xdg-0.1
|
26
|
-
$ setup.rb all
|
46
|
+
$ tar -xvzf xdg-0.4.1
|
47
|
+
$ cd xdg-0.4.1
|
48
|
+
$ sudo setup.rb all
|
27
49
|
|
28
50
|
== Development
|
29
51
|
|
data/RELEASE
CHANGED
@@ -1,5 +1,10 @@
|
|
1
|
-
This
|
1
|
+
This release removes the xdg_ prefix from the module-level
|
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.
|
2
5
|
|
3
|
-
|
4
|
-
|
6
|
+
### 0.3.0 / 2008-09-11
|
7
|
+
|
8
|
+
* Renamed module level methods without 'xdg_' prefix.
|
9
|
+
* The xdg_ versions still exist for backward compatibility.
|
5
10
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
xdg 0.
|
1
|
+
xdg 0.3.0 beta (2008-09-30)
|
data/lib/xdg.rb
CHANGED
@@ -32,81 +32,82 @@
|
|
32
32
|
|
33
33
|
module XDG
|
34
34
|
|
35
|
-
|
36
|
-
module_function
|
37
|
-
###############
|
38
|
-
|
39
|
-
def xdg_home
|
35
|
+
def self.home
|
40
36
|
ENV['HOME'] || File.expand_path('~')
|
41
37
|
end
|
42
38
|
|
43
39
|
# Location of user's personal config directory.
|
44
|
-
def
|
40
|
+
def self.config_home
|
45
41
|
File.expand_path(
|
46
42
|
ENV['XDG_CONFIG_HOME'] || File.join(xdg_home, '.config')
|
47
43
|
)
|
48
44
|
end
|
49
45
|
|
50
46
|
# List of user's shared config directories.
|
51
|
-
def
|
52
|
-
dirs = ENV['XDG_CONFIG_DIRS'].split(/[:;]/)
|
47
|
+
def self.config_dirs
|
48
|
+
dirs = ENV['XDG_CONFIG_DIRS'].to_s.split(/[:;]/)
|
53
49
|
if dirs.empty?
|
54
50
|
dirs = %w{/etc/xdg}
|
55
51
|
end
|
56
|
-
|
52
|
+
dirs.collect{ |d| File.expand_path(d) }
|
57
53
|
end
|
58
54
|
|
59
55
|
# Location of user's personal data directory.
|
60
|
-
def
|
56
|
+
def self.data_home
|
61
57
|
File.expand_path(
|
62
58
|
ENV['XDG_DATA_HOME'] || File.join(xdg_home, '.local', 'share')
|
63
59
|
)
|
64
60
|
end
|
65
61
|
|
66
62
|
# List of user's shared data directores.
|
67
|
-
def
|
63
|
+
def self.data_dirs
|
68
64
|
dirs = ENV['XDG_DATA_DIRS'].split(/[:;]/)
|
69
65
|
if dirs.empty?
|
70
66
|
dirs = %w{/usr/local/share/ /usr/share/}
|
71
67
|
end
|
72
|
-
|
68
|
+
dirs.collect{ |d| File.expand_path(d) }
|
73
69
|
end
|
74
70
|
|
75
71
|
# Location of user's personal cache directory.
|
76
|
-
def
|
72
|
+
def self.cache_home
|
77
73
|
File.expand_path(
|
78
74
|
ENV['XDG_CACHE_HOME'] || File.join(xdg_home, '.cache')
|
79
75
|
)
|
80
76
|
end
|
81
77
|
|
82
78
|
# Find a file or directory in data dirs.
|
83
|
-
def
|
84
|
-
|
79
|
+
def self.data_file(file)
|
80
|
+
find = nil
|
81
|
+
[xdg_data_home, *xdg_data_dirs].each do |dir|
|
85
82
|
path = File.join(dir,file)
|
86
|
-
break path if File.exist?(path)
|
83
|
+
break find = path if File.exist?(path)
|
87
84
|
end
|
85
|
+
find
|
88
86
|
end
|
89
87
|
|
90
88
|
# Find a file or directory in config dirs.
|
91
|
-
def
|
92
|
-
|
89
|
+
def self.config_file(file)
|
90
|
+
find = nil
|
91
|
+
[xdg_config_home, *xdg_config_dirs].each do |dir|
|
93
92
|
path = File.join(dir,file)
|
94
|
-
break path if File.exist?(path)
|
93
|
+
break find = path if File.exist?(path)
|
95
94
|
end
|
95
|
+
find
|
96
96
|
end
|
97
97
|
|
98
98
|
# Find a file or directory in the user cache.
|
99
|
-
def
|
100
|
-
File.join(
|
99
|
+
def self.cache_file(file)
|
100
|
+
path = File.join(xdg_cache_home,file)
|
101
|
+
File.exist?(path) ? path : nil
|
101
102
|
end
|
102
103
|
|
103
|
-
|
104
|
-
# The following are not strictly XDG spec,
|
105
|
-
# but are useful in the same respect.
|
106
|
-
|
104
|
+
#--
|
105
|
+
# The following are not strictly XDG spec,
|
106
|
+
# but are useful in the same respect.
|
107
|
+
#++
|
107
108
|
|
108
109
|
# Location of working config directory.
|
109
|
-
def
|
110
|
+
def self.config_work
|
110
111
|
File.expand_path(
|
111
112
|
#ENV['XDG_CONFIG_WORK'] || File.join(Dir.pwd, '.config')
|
112
113
|
File.join(Dir.pwd, '.config')
|
@@ -114,7 +115,7 @@ module XDG
|
|
114
115
|
end
|
115
116
|
|
116
117
|
# Location of working data directory.
|
117
|
-
def
|
118
|
+
def self.data_work
|
118
119
|
File.expand_path(
|
119
120
|
#ENV['XDG_DATA_WORK'] || File.join(Dir.pwd, '.share')
|
120
121
|
File.join(Dir.pwd, '.share')
|
@@ -122,12 +123,31 @@ module XDG
|
|
122
123
|
end
|
123
124
|
|
124
125
|
# Location of working cache directory.
|
125
|
-
def
|
126
|
+
def self.cache_work
|
126
127
|
File.expand_path(
|
127
128
|
#ENV['XDG_CACHE_WORK'] || File.join(Dir.pwd, '.cache')
|
128
129
|
File.join(Dir.pwd, '.cache')
|
129
130
|
)
|
130
131
|
end
|
131
132
|
|
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
|
+
|
132
152
|
end # module XDG
|
133
153
|
|
data/meta/abstract
CHANGED
data/meta/title
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
XDG
|
@@ -0,0 +1 @@
|
|
1
|
+
BAR.CONFIG
|
@@ -0,0 +1 @@
|
|
1
|
+
BAR.DAT
|
data/test/test_xdg.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
$: << 'lib'
|
3
|
+
require 'xdg'
|
4
|
+
|
5
|
+
# run test from fakeroot directory.
|
6
|
+
Dir.chdir(File.join(File.dirname(__FILE__), 'fakeroot'))
|
7
|
+
|
8
|
+
ENV['HOME'] = File.join(Dir.pwd, 'home')
|
9
|
+
ENV['XDG_DATA_DIRS'] = File.join(Dir.pwd, 'usr/share')
|
10
|
+
ENV['XDG_CONFIG_DIRS'] = File.join(Dir.pwd, 'etc/xdg')
|
11
|
+
|
12
|
+
class TestXDG < Test::Unit::TestCase
|
13
|
+
|
14
|
+
# Test the standard paths.
|
15
|
+
|
16
|
+
def test_xdg_home
|
17
|
+
assert_equal(File.join(Dir.pwd,'home'), XDG.xdg_home)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_xdg_config_home
|
21
|
+
assert_equal(File.join(Dir.pwd,'home/.config'), XDG.xdg_config_home)
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_xdg_config_dirs
|
25
|
+
assert_equal([File.join(Dir.pwd,"etc/xdg")], XDG.xdg_config_dirs)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_xdg_data_home
|
29
|
+
assert_equal(File.join(Dir.pwd,'home/.local/share'), XDG.xdg_data_home)
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_xdg_data_dirs
|
33
|
+
assert_equal([File.join(Dir.pwd,'usr/share')], XDG.xdg_data_dirs)
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_xdg_cache_home
|
37
|
+
assert_equal(File.join(Dir.pwd,'home/.cache'), XDG.xdg_cache_home)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Test the file lookups.
|
41
|
+
|
42
|
+
def test_xdg_data_file
|
43
|
+
file = 'foo.dat'
|
44
|
+
assert_equal(File.join(Dir.pwd,'home/.local/share', file), XDG.xdg_data_file(file))
|
45
|
+
file = 'bar.dat'
|
46
|
+
assert_equal(File.join(Dir.pwd,'usr/share', file), XDG.xdg_data_file(file))
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_xdg_config_file
|
50
|
+
file = 'foo.config'
|
51
|
+
assert_equal(File.join(Dir.pwd,'home/.config', file), XDG.xdg_config_file(file))
|
52
|
+
file = 'bar.config'
|
53
|
+
assert_equal(File.join(Dir.pwd,'etc/xdg', file), XDG.xdg_config_file(file))
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_xdg_cache_file
|
57
|
+
file = 'foo.cache'
|
58
|
+
assert_equal(File.join(Dir.pwd,'home/.cache', file), XDG.xdg_cache_file(file))
|
59
|
+
end
|
60
|
+
|
61
|
+
# Test the working directory variations.
|
62
|
+
|
63
|
+
def test_xdg_config_work
|
64
|
+
assert_equal(File.join(Dir.pwd,'.config'), XDG.xdg_config_work)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_xdg_data_work
|
68
|
+
assert_equal(File.join(Dir.pwd,'.share'), XDG.xdg_data_work)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_xdg_cache_work
|
72
|
+
assert_equal(File.join(Dir.pwd,'.cache'), XDG.xdg_cache_work)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
metadata
CHANGED
@@ -1,22 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xdg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
tigerops-community@rubyforge.org
|
9
|
-
|
7
|
+
- tigerops-community@rubyforge.org
|
10
8
|
- 7rans <transfire@gmail.com>
|
11
9
|
autorequire:
|
12
10
|
bindir: bin
|
13
11
|
cert_chain: []
|
14
12
|
|
15
|
-
date: 2008-
|
13
|
+
date: 2008-10-11 00:00:00 -04:00
|
16
14
|
default_executable:
|
17
15
|
dependencies: []
|
18
16
|
|
19
|
-
description: XDG provides
|
17
|
+
description: "XDG provides a module for supporting the XDG Base Directory Standard. See: http://standards.freedesktop.org/basedir-spec/basedir-spec-0.6.html"
|
20
18
|
email:
|
21
19
|
executables: []
|
22
20
|
|
@@ -26,21 +24,30 @@ extra_rdoc_files:
|
|
26
24
|
- README
|
27
25
|
- MANIFEST
|
28
26
|
- RELEASE
|
27
|
+
- HISTORY
|
29
28
|
- VERSION
|
30
29
|
- COPYING
|
31
30
|
files:
|
32
|
-
- doc
|
33
|
-
- doc/book
|
34
|
-
- doc/book/basedir-spec-0.6.html
|
35
31
|
- MANIFEST
|
36
32
|
- test
|
33
|
+
- test/fakeroot
|
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
|
37
42
|
- RELEASE
|
38
43
|
- README
|
44
|
+
- HISTORY
|
39
45
|
- meta
|
40
46
|
- meta/homepage
|
41
47
|
- meta/summary
|
42
48
|
- meta/abstract
|
43
49
|
- meta/releases
|
50
|
+
- meta/title
|
44
51
|
- meta/authors
|
45
52
|
- meta/contact
|
46
53
|
- lib
|
@@ -48,9 +55,7 @@ files:
|
|
48
55
|
- VERSION
|
49
56
|
- COPYING
|
50
57
|
has_rdoc: true
|
51
|
-
homepage:
|
52
|
-
http://xdg.rubyforge.org
|
53
|
-
|
58
|
+
homepage: http://xdg.rubyforge.org
|
54
59
|
post_install_message:
|
55
60
|
rdoc_options:
|
56
61
|
- --inline-source
|
@@ -78,6 +83,14 @@ rubyforge_project: xdg
|
|
78
83
|
rubygems_version: 1.2.0
|
79
84
|
signing_key:
|
80
85
|
specification_version: 2
|
81
|
-
summary: XDG provides
|
82
|
-
test_files:
|
83
|
-
|
86
|
+
summary: XDG provides a module for supporting the XDG Base Directory Standard.
|
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
|
+
- test/test_xdg.rb
|
@@ -1,138 +0,0 @@
|
|
1
|
-
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>XDG Base Directory Specification</title><meta name="generator" content="DocBook XSL Stylesheets V1.66.1"></head><body link="#0000ff" alink="#0000ff" bgcolor="white" text="black" vlink="#840084"><div class="article" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="index"></a>XDG Base Directory Specification</h1></div><div><div class="authorgroup"><div class="author"><h3 class="author"><span class="firstname">Waldo</span> <span class="surname">Bastian</span></h3><div class="affiliation"><div class="address"><p><br>
|
2
|
-
<tt class="email"><<a href="mailto:bastian@kde.org">bastian@kde.org</a>></tt><br>
|
3
|
-
</p></div></div></div></div></div><div><p class="releaseinfo">Version 0.6</p></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#introduction">Introduction</a></span></dt><dt><span class="sect1"><a href="#basics">Basics</a></span></dt><dt><span class="sect1"><a href="#variables">Environment variables</a></span></dt><dt><span class="sect1"><a href="#referencing">Referencing this specification</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both;"><a name="introduction"></a>Introduction</h2></div></div></div><p>
|
4
|
-
Various specifications specify files and file formats. This
|
5
|
-
specification defines where these files should be looked for by
|
6
|
-
defining one or more base directories relative to which files
|
7
|
-
should be located.
|
8
|
-
</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both;"><a name="basics"></a>Basics</h2></div></div></div><p>
|
9
|
-
The XDG Base Directory Specification is based on the following concepts:
|
10
|
-
</p><div class="itemizedlist"><ul type="disc"><li><p>
|
11
|
-
There is a single base directory relative to which user-specific
|
12
|
-
data files should be written. This directory is defined by the
|
13
|
-
environment variable <tt class="literal">$XDG_DATA_HOME</tt>.
|
14
|
-
</p></li><li><p>
|
15
|
-
There is a single base directory relative to which user-specific
|
16
|
-
configuration files should be written. This directory is defined by the
|
17
|
-
environment variable <tt class="literal">$XDG_CONFIG_HOME</tt>.
|
18
|
-
</p></li><li><p>
|
19
|
-
There is a set of preference ordered base directories relative to
|
20
|
-
which data files should be searched. This set of directories is defined
|
21
|
-
by the environment variable <tt class="literal">$XDG_DATA_DIRS</tt>.
|
22
|
-
</p></li><li><p>
|
23
|
-
There is a set of preference ordered base directories relative to
|
24
|
-
which configuration files should be searched.
|
25
|
-
This set of directories is defined
|
26
|
-
by the environment variable <tt class="literal">$XDG_CONFIG_DIRS</tt>.
|
27
|
-
</p></li><li><p>
|
28
|
-
There is a single base directory relative to which user-specific
|
29
|
-
non-essential (cached) data should be written.
|
30
|
-
This directory is defined by the
|
31
|
-
environment variable <tt class="literal">$XDG_CACHE_HOME</tt>.
|
32
|
-
</p></li></ul></div><p>
|
33
|
-
</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both;"><a name="variables"></a>Environment variables</h2></div></div></div><p>
|
34
|
-
<tt class="literal">$XDG_DATA_HOME</tt> defines the base directory relative to
|
35
|
-
which user specific data files should be stored. If
|
36
|
-
<tt class="literal">$XDG_DATA_HOME</tt> is either not set or empty, a default equal to
|
37
|
-
<tt class="literal">$HOME</tt>/.local/share should be used.
|
38
|
-
</p><p>
|
39
|
-
<tt class="literal">$XDG_CONFIG_HOME</tt> defines the base directory relative to
|
40
|
-
which user specific configuration files should be stored. If
|
41
|
-
<tt class="literal">$XDG_CONFIG_HOME</tt> is either not set or empty, a default equal to
|
42
|
-
<tt class="literal">$HOME</tt>/.config should be used.
|
43
|
-
</p><p>
|
44
|
-
<tt class="literal">$XDG_DATA_DIRS</tt> defines the preference-ordered set of
|
45
|
-
base directories to search for data files in addition to the
|
46
|
-
<tt class="literal">$XDG_DATA_HOME</tt> base directory.
|
47
|
-
The directories in <tt class="literal">$XDG_DATA_DIRS</tt> should be seperated
|
48
|
-
with a colon ':'.
|
49
|
-
</p><p>
|
50
|
-
If <tt class="literal">$XDG_DATA_DIRS</tt> is either not set or empty, a value equal to
|
51
|
-
/usr/local/share/:/usr/share/ should be used.
|
52
|
-
</p><p>
|
53
|
-
<tt class="literal">$XDG_CONFIG_DIRS</tt> defines the preference-ordered set of
|
54
|
-
base directories to search for configuration files in addition to the
|
55
|
-
<tt class="literal">$XDG_CONFIG_HOME</tt> base directory.
|
56
|
-
The directories in <tt class="literal">$XDG_CONFIG_DIRS</tt> should be seperated
|
57
|
-
with a colon ':'.
|
58
|
-
</p><p>
|
59
|
-
If <tt class="literal">$XDG_CONFIG_DIRS</tt> is either not set or empty, a value equal to
|
60
|
-
/etc/xdg should be used.
|
61
|
-
</p><p>
|
62
|
-
The order of base directories denotes their importance; the first
|
63
|
-
directory listed is the most important. When the same information is
|
64
|
-
defined in multiple places the information defined relative to the more
|
65
|
-
important base directory takes precedent. The base directory defined
|
66
|
-
by <tt class="literal">$XDG_DATA_HOME</tt> is considered more important than
|
67
|
-
any of the base directories defined by <tt class="literal">$XDG_DATA_DIRS</tt>.
|
68
|
-
The base directory defined
|
69
|
-
by <tt class="literal">$XDG_CONFIG_HOME</tt> is considered more important than
|
70
|
-
any of the base directories defined by <tt class="literal">$XDG_CONFIG_DIRS</tt>.
|
71
|
-
</p><p>
|
72
|
-
<tt class="literal">$XDG_CACHE_HOME</tt> defines the base directory relative to
|
73
|
-
which user specific non-essential data files should be stored. If
|
74
|
-
<tt class="literal">$XDG_CACHE_HOME</tt> is either not set or empty, a default equal to
|
75
|
-
<tt class="literal">$HOME</tt>/.cache should be used.
|
76
|
-
</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both;"><a name="referencing"></a>Referencing this specification</h2></div></div></div><p>
|
77
|
-
Other specifications may reference this specification by specifying the
|
78
|
-
location of a data file as
|
79
|
-
<tt class="literal">$XDG_DATA_DIRS</tt>/subdir/filename. This implies that:
|
80
|
-
</p><div class="itemizedlist"><ul type="disc"><li><p>
|
81
|
-
Such file should be installed to <tt class="literal">$datadir</tt>/subdir/filename
|
82
|
-
with <tt class="literal">$datadir</tt> defaulting to /usr/share.
|
83
|
-
</p></li><li><p>
|
84
|
-
A user specific version of the data file may be created in
|
85
|
-
<tt class="literal">$XDG_DATA_HOME</tt>/subdir/filename, taking into
|
86
|
-
account the default value for <tt class="literal">$XDG_DATA_HOME</tt> if
|
87
|
-
<tt class="literal">$XDG_DATA_HOME</tt> is not set.
|
88
|
-
</p></li><li><p>
|
89
|
-
Lookups of the data file should search for ./subdir/filename relative to
|
90
|
-
all base directories specified by <tt class="literal">$XDG_DATA_HOME</tt> and
|
91
|
-
<tt class="literal">$XDG_DATA_DIRS</tt> . If an environment
|
92
|
-
variable is either not set or empty, its default value as defined by this specification
|
93
|
-
should be used instead.
|
94
|
-
</p></li></ul></div><p>
|
95
|
-
</p><p>
|
96
|
-
Specifications may reference this specification by specifying the
|
97
|
-
location of a configuration file as
|
98
|
-
<tt class="literal">$XDG_CONFIG_DIRS</tt>/subdir/filename. This implies that:
|
99
|
-
</p><div class="itemizedlist"><ul type="disc"><li><p>
|
100
|
-
Default configuration files should be installed to <tt class="literal">$sysconfdir</tt>/xdg/subdir/filename
|
101
|
-
with <tt class="literal">$sysconfdir</tt> defaulting to /etc.
|
102
|
-
</p></li><li><p>
|
103
|
-
A user specific version of the configuration file may be created in
|
104
|
-
<tt class="literal">$XDG_CONFIG_HOME</tt>/subdir/filename, taking into
|
105
|
-
account the default value for <tt class="literal">$XDG_CONFIG_HOME</tt> if
|
106
|
-
<tt class="literal">$XDG_CONFIG_HOME</tt> is not set.
|
107
|
-
</p></li><li><p>
|
108
|
-
Lookups of the configuration file should search for ./subdir/filename relative to
|
109
|
-
all base directories indicated by <tt class="literal">$XDG_CONFIG_HOME</tt> and
|
110
|
-
<tt class="literal">$XDG_CONFIG_DIRS</tt> . If an environment
|
111
|
-
variable is either not set or empty, its default value as defined by this specification
|
112
|
-
should be used instead.
|
113
|
-
</p></li></ul></div><p>
|
114
|
-
</p><p>
|
115
|
-
If, when attempting to write a file, the destination
|
116
|
-
directory is non-existant an attempt should be made to create it
|
117
|
-
with permission <tt class="literal">0700</tt>. If the destination directory
|
118
|
-
exists already the permissions should not be changed.
|
119
|
-
The application should be prepared to handle the case where the file
|
120
|
-
could not be written, either because the directory was non-existant
|
121
|
-
and could not be created, or for any other reason. In such case it
|
122
|
-
may chose to present an error message to the user.
|
123
|
-
</p><p>
|
124
|
-
When attempting to read a file, if for any reason a file in a certain
|
125
|
-
directory is unaccessible, e.g. because the directory is non-existant,
|
126
|
-
the file is non-existant or the user is not authorized to open the file,
|
127
|
-
then the processing of the file in that directory should be skipped.
|
128
|
-
If due to this a required file could not be found at all, the
|
129
|
-
application may chose to present an error message to the user.
|
130
|
-
</p><p>
|
131
|
-
A specification that refers to <tt class="literal">$XDG_DATA_DIRS</tt> or
|
132
|
-
<tt class="literal">$XDG_CONFIG_DIRS</tt> should define what the behaviour
|
133
|
-
must be when a file is located under multiple base directories.
|
134
|
-
It could, for example, define that only the file under the most
|
135
|
-
important base directory should be used or, as another example,
|
136
|
-
it could define rules for merging the information from the different
|
137
|
-
files.
|
138
|
-
</p></div></div></body></html>
|