runcom 5.1.1 → 6.0.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: cd1307693958bb9052b260a4fc4cf5761ba0f2ef4d44575fd04a12494d08510d
4
- data.tar.gz: 02d95767c848462cf42b696ab71df54c1612c32d62f1957c76e7ebb7c1bc4e54
3
+ metadata.gz: 2c36440a5f6b7c7e5e9bc63457ff04ce4f03a2bb888ebf5ddd3294b6fbb554ed
4
+ data.tar.gz: 7e15a92472a4ecf47e591e244965439b79337d17c98db9a651a626ec73adcc8d
5
5
  SHA512:
6
- metadata.gz: f93e673db789725f9f832df5e73ec3830ae1ffdf4d094d5e788efb515176cea6c486ff90355eb5016ca4e53dbd00c5c64aa749dcd519795054c816a06016e951
7
- data.tar.gz: acbd17ec8415a2d917eb87434c89e60bd91ca0efef20b96e729e7f0d50e6c5fa969fb1dfa7565a423f5b77752e55e78e94f3c1631914beb78ab8aec32d17f592
6
+ metadata.gz: 36cb0e69cb446658acd3c812f21909b5dfbfb2e42c37b89b50f1bf8b0bfa910110768dc77ab1d5510c61d1c0e298b3ca4e926e62aaef14a569a520706a9b9bbd
7
+ data.tar.gz: a787c56d515d8462db7453a692e60031dee3e5e91109acb110619e7e76ad944962443fbf3b2873cf3db634bb401c629f7d671dcc654b8e4db6b68b3708a79ae8
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -4,7 +4,9 @@ require "xdg"
4
4
  require "runcom/identity"
5
5
  require "runcom/errors/base"
6
6
  require "runcom/errors/syntax"
7
- require "runcom/paths/friendly"
8
- require "runcom/config"
7
+ require "runcom/paths/home"
8
+ require "runcom/paths/common"
9
+ require "runcom/context"
9
10
  require "runcom/cache"
11
+ require "runcom/config"
10
12
  require "runcom/data"
@@ -1,31 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "forwardable"
4
+
3
5
  module Runcom
4
6
  # A developer friendly wrapper of XDG cache.
5
- Cache = Struct.new :name, :home, :environment, keyword_init: true do
7
+ class Cache
6
8
  extend Forwardable
7
9
 
8
- delegate %i[inspect] => :cache
9
-
10
- def initialize *arguments
11
- super
10
+ DEFAULT_CONTEXT = Context.new xdg: XDG::Cache
12
11
 
13
- self[:home] ||= Runcom::Paths::Friendly
14
- self[:environment] ||= ENV
15
- @cache = XDG::Cache.new home: home, environment: environment
16
- freeze
17
- end
18
-
19
- def path
20
- paths.find(&:exist?)
21
- end
12
+ delegate %i[relative namespace file_name current all inspect] => :common
22
13
 
23
- def paths
24
- cache.all
14
+ def initialize path, context: DEFAULT_CONTEXT
15
+ @common = Paths::Common.new path, context: context
25
16
  end
26
17
 
27
18
  private
28
19
 
29
- attr_reader :cache
20
+ attr_reader :common
30
21
  end
31
22
  end
@@ -1,42 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "pathname"
4
3
  require "yaml"
5
4
  require "refinements/hashes"
6
5
 
7
- # :reek:TooManyInstanceVariables
8
6
  module Runcom
9
7
  # A developer friendly wrapper of XDG config.
10
8
  class Config
11
9
  extend Forwardable
12
10
  using Refinements::Hashes
13
11
 
14
- DEFAULT_FILE_NAME = "configuration.yml"
12
+ DEFAULT_CONTEXT = Context.new xdg: XDG::Config
15
13
 
16
- delegate %i[inspect] => :config
14
+ delegate %i[relative namespace file_name current all inspect] => :common
17
15
 
18
- # rubocop:disable Metrics/ParameterLists
19
- def initialize name, environment: ENV, file_name: DEFAULT_FILE_NAME, defaults: {}
20
- @name = name
21
- @environment = environment
22
- @file_name = file_name
23
- @defaults = defaults
24
- @config = XDG::Config.new home: Runcom::Paths::Friendly, environment: environment
16
+ def initialize path, defaults: {}, context: DEFAULT_CONTEXT
17
+ @common = Paths::Common.new path, context: context
18
+ @context = context
25
19
  @settings = defaults.deep_merge process_settings
26
20
  freeze
27
21
  end
28
- # rubocop:enable Metrics/ParameterLists
29
-
30
- def path
31
- paths.find(&:exist?)
32
- end
33
-
34
- def paths
35
- config.all.map { |root| Pathname "#{root}/#{name}/#{file_name}" }
36
- end
37
22
 
38
23
  def merge other
39
- self.class.new name, file_name: file_name, defaults: settings.deep_merge(other.to_h)
24
+ self.class.new common.relative, defaults: settings.deep_merge(other.to_h), context: context
40
25
  end
41
26
 
42
27
  # :reek:FeatureEnvy
@@ -47,7 +32,7 @@ module Runcom
47
32
  alias eql? ==
48
33
 
49
34
  def hash
50
- [name, file_name, to_h, self.class].hash
35
+ [common.relative, to_h, self.class].hash
51
36
  end
52
37
 
53
38
  def to_h
@@ -56,18 +41,19 @@ module Runcom
56
41
 
57
42
  private
58
43
 
59
- attr_reader :name, :environment, :file_name, :defaults, :settings, :config
44
+ attr_reader :common, :context, :settings
60
45
 
61
46
  def process_settings
62
47
  load_settings
63
48
  rescue Psych::SyntaxError => error
64
49
  raise Errors::Syntax, error.message
65
50
  rescue StandardError
66
- defaults
51
+ context.defaults
52
+ {}
67
53
  end
68
54
 
69
55
  def load_settings
70
- yaml = YAML.load_file path
56
+ yaml = YAML.load_file common.current
71
57
  yaml.is_a?(Hash) ? yaml : {}
72
58
  end
73
59
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Runcom
4
+ # A common context for all XDG custom objects.
5
+ Context = Struct.new :defaults, :home, :environment, :xdg, keyword_init: true do
6
+ def initialize *arguments
7
+ super
8
+
9
+ self[:home] ||= Paths::Home
10
+ self[:environment] ||= ENV
11
+ self[:xdg] = xdg.new home: home, environment: environment if xdg
12
+ end
13
+ end
14
+ end
@@ -1,33 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "pathname"
3
+ require "forwardable"
4
4
 
5
5
  module Runcom
6
6
  # A developer friendly wrapper of XDG data.
7
- Data = Struct.new :name, :home, :environment, keyword_init: true do
7
+ class Data
8
8
  extend Forwardable
9
9
 
10
- delegate %i[inspect] => :data
10
+ DEFAULT_CONTEXT = Context.new xdg: XDG::Data
11
11
 
12
- def initialize *arguments
13
- super
12
+ delegate %i[relative namespace file_name current all inspect] => :common
14
13
 
15
- self[:home] ||= Runcom::Paths::Friendly
16
- self[:environment] ||= ENV
17
- @data = XDG::Data.new home: home, environment: environment
18
- freeze
19
- end
20
-
21
- def path
22
- paths.find(&:exist?)
23
- end
24
-
25
- def paths
26
- data.all.map { |root| Pathname "#{root}/#{name}" }
14
+ def initialize path, context: DEFAULT_CONTEXT
15
+ @common = Paths::Common.new path, context: context
27
16
  end
28
17
 
29
18
  private
30
19
 
31
- attr_reader :data
20
+ attr_reader :common
32
21
  end
33
22
  end
@@ -12,7 +12,7 @@ module Runcom
12
12
  end
13
13
 
14
14
  def self.version
15
- "5.1.1"
15
+ "6.0.0"
16
16
  end
17
17
 
18
18
  def self.version_label
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "forwardable"
4
+ require "pathname"
5
+
6
+ module Runcom
7
+ module Paths
8
+ # Provides common path/functionality for all XDG enhanced objects.
9
+ class Common
10
+ extend Forwardable
11
+
12
+ delegate %i[inspect] => :xdg
13
+
14
+ attr_reader :relative
15
+
16
+ def initialize relative, context: Context.new
17
+ @relative = Pathname relative
18
+ @context = context
19
+ end
20
+
21
+ def namespace
22
+ relative.parent
23
+ end
24
+
25
+ def file_name
26
+ relative.basename
27
+ end
28
+
29
+ def current
30
+ all.find(&:exist?)
31
+ end
32
+
33
+ def all
34
+ xdg.all.map { |root| root.join relative }
35
+ end
36
+
37
+ private
38
+
39
+ attr_reader :context
40
+
41
+ def xdg
42
+ context.xdg
43
+ end
44
+ end
45
+ end
46
+ end
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "forwardable"
4
+ require "pathname"
4
5
 
5
6
  module Runcom
6
7
  module Paths
7
- # A XDG home path with a loose adherence to XDG specification by preferring local path if it
8
- # exists, otherwise defaulting to standard computed path.
9
- class Friendly
8
+ # A XDG home path that prefers local over global path.
9
+ class Home
10
10
  extend Forwardable
11
11
 
12
12
  delegate %i[key value default] => :standard
13
13
 
14
14
  def initialize pair, environment = ENV
15
- @standard = XDG::Paths::Standard.new pair, environment
15
+ @standard = XDG::Paths::Home.new pair, environment
16
16
  end
17
17
 
18
18
  def dynamic
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: 5.1.1
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -28,7 +28,7 @@ cert_chain:
28
28
  dKvURM+1PwDCzC5tvRwjhUJIizau6+MtkFCvJHmaAj1aZL3odcPejHj5Hxt/0CUW
29
29
  y84=
30
30
  -----END CERTIFICATE-----
31
- date: 2019-11-01 00:00:00.000000000 Z
31
+ date: 2020-01-01 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: refinements
@@ -36,28 +36,28 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '6.0'
39
+ version: '7.0'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '6.0'
46
+ version: '7.0'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: xdg
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '3.1'
53
+ version: '4.0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '3.1'
60
+ version: '4.0'
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: bundler-audit
63
63
  requirement: !ruby/object:Gem::Requirement
@@ -72,34 +72,6 @@ dependencies:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0.6'
75
- - !ruby/object:Gem::Dependency
76
- name: gemsmith
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '13.5'
82
- type: :development
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '13.5'
89
- - !ruby/object:Gem::Dependency
90
- name: git-cop
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '3.5'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '3.5'
103
75
  - !ruby/object:Gem::Dependency
104
76
  name: guard-rspec
105
77
  requirement: !ruby/object:Gem::Requirement
@@ -120,28 +92,28 @@ dependencies:
120
92
  requirements:
121
93
  - - "~>"
122
94
  - !ruby/object:Gem::Version
123
- version: '0.10'
95
+ version: '0.12'
124
96
  type: :development
125
97
  prerelease: false
126
98
  version_requirements: !ruby/object:Gem::Requirement
127
99
  requirements:
128
100
  - - "~>"
129
101
  - !ruby/object:Gem::Version
130
- version: '0.10'
102
+ version: '0.12'
131
103
  - !ruby/object:Gem::Dependency
132
104
  name: pry-byebug
133
105
  requirement: !ruby/object:Gem::Requirement
134
106
  requirements:
135
107
  - - "~>"
136
108
  - !ruby/object:Gem::Version
137
- version: '3.5'
109
+ version: '3.7'
138
110
  type: :development
139
111
  prerelease: false
140
112
  version_requirements: !ruby/object:Gem::Requirement
141
113
  requirements:
142
114
  - - "~>"
143
115
  - !ruby/object:Gem::Version
144
- version: '3.5'
116
+ version: '3.7'
145
117
  - !ruby/object:Gem::Dependency
146
118
  name: rake
147
119
  requirement: !ruby/object:Gem::Requirement
@@ -190,70 +162,70 @@ dependencies:
190
162
  requirements:
191
163
  - - "~>"
192
164
  - !ruby/object:Gem::Version
193
- version: '0.76'
165
+ version: '0.78'
194
166
  type: :development
195
167
  prerelease: false
196
168
  version_requirements: !ruby/object:Gem::Requirement
197
169
  requirements:
198
170
  - - "~>"
199
171
  - !ruby/object:Gem::Version
200
- version: '0.76'
172
+ version: '0.78'
201
173
  - !ruby/object:Gem::Dependency
202
174
  name: rubocop-performance
203
175
  requirement: !ruby/object:Gem::Requirement
204
176
  requirements:
205
177
  - - "~>"
206
178
  - !ruby/object:Gem::Version
207
- version: '1.4'
179
+ version: '1.5'
208
180
  type: :development
209
181
  prerelease: false
210
182
  version_requirements: !ruby/object:Gem::Requirement
211
183
  requirements:
212
184
  - - "~>"
213
185
  - !ruby/object:Gem::Version
214
- version: '1.4'
186
+ version: '1.5'
215
187
  - !ruby/object:Gem::Dependency
216
188
  name: rubocop-rake
217
189
  requirement: !ruby/object:Gem::Requirement
218
190
  requirements:
219
191
  - - "~>"
220
192
  - !ruby/object:Gem::Version
221
- version: '0.3'
193
+ version: '0.5'
222
194
  type: :development
223
195
  prerelease: false
224
196
  version_requirements: !ruby/object:Gem::Requirement
225
197
  requirements:
226
198
  - - "~>"
227
199
  - !ruby/object:Gem::Version
228
- version: '0.3'
200
+ version: '0.5'
229
201
  - !ruby/object:Gem::Dependency
230
202
  name: rubocop-rspec
231
203
  requirement: !ruby/object:Gem::Requirement
232
204
  requirements:
233
205
  - - "~>"
234
206
  - !ruby/object:Gem::Version
235
- version: '1.33'
207
+ version: '1.37'
236
208
  type: :development
237
209
  prerelease: false
238
210
  version_requirements: !ruby/object:Gem::Requirement
239
211
  requirements:
240
212
  - - "~>"
241
213
  - !ruby/object:Gem::Version
242
- version: '1.33'
214
+ version: '1.37'
243
215
  - !ruby/object:Gem::Dependency
244
216
  name: simplecov
245
217
  requirement: !ruby/object:Gem::Requirement
246
218
  requirements:
247
219
  - - "~>"
248
220
  - !ruby/object:Gem::Version
249
- version: '0.13'
221
+ version: '0.17'
250
222
  type: :development
251
223
  prerelease: false
252
224
  version_requirements: !ruby/object:Gem::Requirement
253
225
  requirements:
254
226
  - - "~>"
255
227
  - !ruby/object:Gem::Version
256
- version: '0.13'
228
+ version: '0.17'
257
229
  description:
258
230
  email:
259
231
  - brooke@alchemists.io
@@ -268,11 +240,13 @@ files:
268
240
  - lib/runcom.rb
269
241
  - lib/runcom/cache.rb
270
242
  - lib/runcom/config.rb
243
+ - lib/runcom/context.rb
271
244
  - lib/runcom/data.rb
272
245
  - lib/runcom/errors/base.rb
273
246
  - lib/runcom/errors/syntax.rb
274
247
  - lib/runcom/identity.rb
275
- - lib/runcom/paths/friendly.rb
248
+ - lib/runcom/paths/common.rb
249
+ - lib/runcom/paths/home.rb
276
250
  homepage: https://github.com/bkuhlmann/runcom
277
251
  licenses:
278
252
  - Apache-2.0
@@ -288,15 +262,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
288
262
  requirements:
289
263
  - - "~>"
290
264
  - !ruby/object:Gem::Version
291
- version: '2.6'
265
+ version: '2.7'
292
266
  required_rubygems_version: !ruby/object:Gem::Requirement
293
267
  requirements:
294
268
  - - ">="
295
269
  - !ruby/object:Gem::Version
296
270
  version: '0'
297
271
  requirements: []
298
- rubygems_version: 3.0.6
272
+ rubygems_version: 3.1.2
299
273
  signing_key:
300
274
  specification_version: 4
301
- summary: An XDG enhanced run command manager for command line interfaces (CLIs).
275
+ summary: An XDG enhanced run command manager for command line interfaces.
302
276
  test_files: []
metadata.gz.sig CHANGED
Binary file