runcom 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0cccf991ffd5ecf95af5725c8c0b223f098ca93bdae3d49135cd0a29ba19eb9
4
- data.tar.gz: d34cb932f9bd927eb2da2aff0e94180f0d2c5dca1fd15a7409d4529726b4158c
3
+ metadata.gz: a023f821e7b98b398dc4e1f1ad8c088c3c8501fd1920393c0072d129e8c74ead
4
+ data.tar.gz: 83b8929393feb7145a076c423bd04e5174ab2eea9d71153a4dfc7fa9b7a83435
5
5
  SHA512:
6
- metadata.gz: f5b489c2cca56abd562427d4d6263f1563a104b3709336c66d3499554aff3e24b8d1a2ebbf76fe31db080dc9888287ae2339a802ab5127862a71f32f15b1cffb
7
- data.tar.gz: 19af5524f8622d785a633d005e2b0d696cd762be47678b67b05da54002002327c6c3699ac67fdaa07fe58375241792803dd3a9733d1ac2ae14f38490562a5589
6
+ metadata.gz: d45dde853a5425a15d6009e629bb66c1f94a58b93287a67c92cc40dd2e9f80cc82db0a4d68d5b7945d11dbfa661e166880ff16c1f8a89918cc6e63ef41a72b5e
7
+ data.tar.gz: 9dd7335294717fba31dc75f86f1566b383877385fd4613bea0196b1c9033758b42ad3d7d3fe8c7b657cd1396328d5b8f2660128aea62af35cfbeeb2e45149899
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -21,6 +21,7 @@ further details.
21
21
  - [Usage](#usage)
22
22
  - [XDG](#xdg)
23
23
  - [Overview](#overview)
24
+ - [Variable Defaults](#variable-defaults)
24
25
  - [Variable Behavior](#variable-behavior)
25
26
  - [`$XDG_*_DIRS`](#xdg__dirs)
26
27
  - [`$XDG_*_HOME`](#xdg__home)
@@ -91,8 +92,12 @@ Provides an API that strictly adheres to the *XDG Base Directory Specification*.
91
92
  xdg.data_home # <= Answers computed `$XDG_DATA_HOME` value.
92
93
  xdg.data_dirs # <= Answers computed `$XDG_DATA_DIRS` value.
93
94
 
94
- `Runcom::XDG::Environment` wraps the following objects which can be used individually if you don't
95
- want to load the entire environment:
95
+ The *computed* value, in this case, is either the user-defined value of the key or the default
96
+ value, per specification, when the key is not defined or empty. For more on this, scroll down to the
97
+ *Variable Defaults* section to learn more.
98
+
99
+ The `Runcom::XDG::Environment` wraps the following objects which can be used individually if you
100
+ don't want to load the entire environment:
96
101
 
97
102
  cache = Runcom::XDG::Cache.new
98
103
  config = Runcom::XDG::Config.new
@@ -106,42 +111,93 @@ following messages:
106
111
  - `#all` - Answers an array of *all* directories as computed from the combined `$XDG_*_HOME` and
107
112
  `$XDG_*_DIRS` values (with `$XDG_*_HOME` prefixed at the start of the array).
108
113
 
114
+ #### Variable Defaults
115
+
116
+ The *XDG Base Directory Specification* defines environment variables and associated default values
117
+ when not defined or empty. The following defaults, per specification, are implemented by the
118
+ `Runcom::XDG` objects:
119
+
120
+ - `$XDG_CACHE_HOME="$HOME/.cache"`
121
+ - `$XDG_CONFIG_HOME="$HOME/.config"`
122
+ - `$XDG_CONFIG_DIRS="/etc/xdg"`
123
+ - `$XDG_DATA_HOME="$HOME/.local/share"`
124
+ - `$XDG_DATA_DIRS="/usr/local/share/:/usr/share/"`
125
+ - `$XDG_RUNTIME_DIR`
126
+
127
+ The `$XDG_RUNTIME_DIR` deserves special mention as it's not, *currently*, implemented as part of
128
+ this gem because it is more user/environment specific. Here is how the `$XDG_RUNTIME_DIR` is meant
129
+ to be used should you choose to use it:
130
+
131
+ - *Must* reference user-specific non-essential runtime files and other file objects (such as
132
+ sockets, named pipes, etc.)
133
+ - *Must* be owned by the user with *only* the user having read and write access to it.
134
+ - *Must* have a Unix access mode of `0700`.
135
+ - *Must* be bound to the user when logging in.
136
+ - *Must* be removed when the user logs out.
137
+ - *Must* be pointed to the same directory when the user logs in more than once.
138
+ - *Must* exist from first login to last logout on the system and not removed in between.
139
+ - *Must* not allow files in the directory to survive reboot or a full logout/login cycle.
140
+ - *Must* keep the directory on the local file system and not shared with any other file systems.
141
+ - *Must* keep the directory fully-featured by the standards of the operating system. Specifically,
142
+ on Unix-like operating systems AF_UNIX sockets, symbolic links, hard links, proper permissions,
143
+ file locking, sparse files, memory mapping, file change notifications, a reliable hard link count
144
+ must be supported, and no restrictions on the file name character set should be imposed. Files in
145
+ this directory *may* be subjected to periodic clean-up. To ensure files are not removed,
146
+ they should have their access time timestamp modified at least once every 6 hours of monotonic
147
+ time or the 'sticky' bit should be set on the file.
148
+ - When not set, applications should fall back to a replacement directory with similar capabilities
149
+ and print a warning message. Applications should use this directory for communication and
150
+ synchronization purposes and should not place larger files in it, since it might reside in runtime
151
+ memory and cannot necessarily be swapped out to disk.
152
+
109
153
  #### Variable Behavior
110
154
 
111
- The behavior of all XDG environment variables can be lumped into two categories of `$XDG_*_HOME` and
112
- `$XDG_*_DIRS` behavior. Each is described below.
155
+ The behavior of most XDG environment variables can be lumped into two categories:
156
+
157
+ - `$XDG_*_HOME`
158
+ - `$XDG_*_DIRS`
159
+
160
+ Each is described in detail below.
113
161
 
114
162
  ##### `$XDG_*_DIRS`
115
163
 
116
- This variable is used to define a colon delimited list of configuration directories. The order is
117
- important as the first directory defined will take precedent over the following directory and so
118
- forth. Example:
164
+ These variables are used to define a colon (`:`) delimited list of directories. Order is important
165
+ as the first directory defined will take precedent over the following directory and so forth. For
166
+ example, here is a situation where the `XDG_CONFIG_DIRS` key has a custom value:
119
167
 
120
168
  XDG_CONFIG_DIRS="/example/one/.config:/example/two/.settings:/example/three/.configuration"
121
169
 
122
- # Yields the following array:
170
+ # Yields the following, colon delimited, array:
123
171
  [
124
172
  "/example/one/.config",
125
173
  "/example/two/.settings",
126
174
  "/example/three/.configuration"
127
175
  ]
128
176
 
129
- In the above example, the `"/example/one/.config"` path will take highest priority since it was
177
+ In the above example, the `"/example/one/.config"` path takes *highest* priority since it was
130
178
  defined first.
131
179
 
132
- When the `$XDG_CONFIG_DIRS` is not defined, it will default to the following array: `["/etc/xdg"]`.
133
- Other `$XDG_*_DIRS` variables share similar behavior.
134
-
135
180
  ##### `$XDG_*_HOME`
136
181
 
137
- This is the environment variable you'll want to use the most as it takes precidence over
138
- `$XDG_*_DIRS` environment variable. When not defined, it defaults to `$HOME/.config` which is
139
- generally want you want. Other `$XDG_*_HOME` variables share similar behavior.
182
+ These variables take precidence over the corresponding `$XDG_*_DIRS` environment variables. Using a
183
+ modified version of the `$XDG_*_DIRS` example, shown above, we could have the following setup:
184
+
185
+ XDG_CONFIG_HOME="/example/priority"
186
+ XDG_CONFIG_DIRS="/example/one/.config:/example/two/.settings"
187
+
188
+ # Yields the following, colon delimited, array:
189
+ [
190
+ "/example/priority",
191
+ "/example/one/.config",
192
+ "/example/two/.settings"
193
+ ]
194
+
195
+ Due to `XDG_CONFIG_HOME` taking precidence over the `XDG_CONFIG_DIRS`, the path with the *highest*
196
+ priority in this example is: `"/example/priority"`.
140
197
 
141
198
  #### Variable Priority
142
199
 
143
- Configuration path precedence is determined in the following order (with the first taking highest
144
- priority):
200
+ Path precedence is determined in the following order (with the first taking highest priority):
145
201
 
146
202
  1. `$XDG_*_HOME` - Will be used if defined. Otherwise, falls back to specification default.
147
203
  1. `$XDG_*_DIRS` - Iterates through directories in order defined (with first taking highest
@@ -150,8 +206,8 @@ priority):
150
206
  ### Runcom
151
207
 
152
208
  Provides wrapper objects around the `XDG` objects which extends and enhances beyond what is found in
153
- the *XDG Base Directory Specification*. This includes preference of local over global
154
- configurations by default as well as other conveniences.
209
+ the *XDG Base Directory Specification*. This includes preference of local over global configurations
210
+ by default as well as other conveniences.
155
211
 
156
212
  #### Overview
157
213
 
@@ -164,18 +220,17 @@ instantiate each object individually:
164
220
 
165
221
  Each of the above objects share the same basic API:
166
222
 
167
- - `#path` - Answers first existing file system path first computed by the `$XDG_*_HOME` value
168
- followed by each computed `$XDG_*_DIRS` value in the order defined.
223
+ - `#path` - Answers first *existing* file system path computed by `$XDG_*_HOME` followed
224
+ by each computed `$XDG_*_DIRS` path in order defined.
169
225
  - `#paths` - Answers all file system paths which is the combined `$XDG_*_HOME` and `$XDG_*_DIRS`
170
- values in the order defined.
226
+ values in order defined. These paths *may* or *may not* exist on the file system.
171
227
 
172
228
  #### Variable Priority
173
229
 
174
- Configuration path precedence is determined in the following order (with the first taking highest
175
- priority):
230
+ Path precedence is determined in the following order (with the first taking highest priority):
176
231
 
177
232
  1. **Local Configuration** - If a `$XDG_*_HOME` or `$XDG_*_DIRS` path relative to the current
178
- working directory is detected, it will take preference over the global configuration. This is the
233
+ working directory is detected, it will take precedence over the global configuration. This is the
179
234
  same behavior as found in Git where the local `.git/config` takes precedence over the global
180
235
  `~/.gitconfig`.
181
236
  1. **Global Configuration** - When a local configuration isn't found, the global configuration is
@@ -221,7 +276,7 @@ For further details, study the public interface as provided by the
221
276
 
222
277
  ### Examples
223
278
 
224
- If you need further examples of gems that use this gem, check out the following:
279
+ If you need examples of gems that leverage this gem, see the following:
225
280
 
226
281
  - [Gemsmith](https://github.com/bkuhlmann/gemsmith) - A command line interface for smithing new Ruby
227
282
  gems.
@@ -12,7 +12,7 @@ module Runcom
12
12
  end
13
13
 
14
14
  def self.version
15
- "4.0.0"
15
+ "4.1.0"
16
16
  end
17
17
 
18
18
  def self.version_label
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runcom
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -29,7 +29,7 @@ cert_chain:
29
29
  4Zrsxi713z6sndd9JBAm4G7mJiV93MsuCM5N4ZDY7XaxIhvctNSNhX/Yn8LLdtGI
30
30
  b4jw5t40FKyNUvLPPXYAvQALBtk=
31
31
  -----END CERTIFICATE-----
32
- date: 2019-01-01 00:00:00.000000000 Z
32
+ date: 2019-02-02 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: refinements
@@ -73,6 +73,34 @@ dependencies:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0.1'
76
+ - !ruby/object:Gem::Dependency
77
+ name: gemsmith
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '13.0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '13.0'
90
+ - !ruby/object:Gem::Dependency
91
+ name: git-cop
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.0'
76
104
  - !ruby/object:Gem::Dependency
77
105
  name: guard-rspec
78
106
  requirement: !ruby/object:Gem::Requirement
@@ -163,14 +191,14 @@ dependencies:
163
191
  requirements:
164
192
  - - "~>"
165
193
  - !ruby/object:Gem::Version
166
- version: '0.62'
194
+ version: '0.63'
167
195
  type: :development
168
196
  prerelease: false
169
197
  version_requirements: !ruby/object:Gem::Requirement
170
198
  requirements:
171
199
  - - "~>"
172
200
  - !ruby/object:Gem::Version
173
- version: '0.62'
201
+ version: '0.63'
174
202
  - !ruby/object:Gem::Dependency
175
203
  name: rubocop-rspec
176
204
  requirement: !ruby/object:Gem::Requirement
metadata.gz.sig CHANGED
Binary file