dip 8.0.0 → 8.1.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.
- checksums.yaml +4 -4
- data/README.md +86 -0
- data/lib/dip/config.rb +28 -2
- data/lib/dip/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b6092ebf900ada263123eecb33ee04460d0d8c03421d7f77b99486b6a66941f
|
4
|
+
data.tar.gz: f2753b321d575b0417ca3153283d8181fdf78f9d75a393c0df74671b0343e8ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4b8bd274d40759d1bcb770d9bc6318980d6de06ce6a2f8e6569b7605cdbe9e77b205480bbf7436ee415bad24176ee90928f450875c33aa6cb997f70f6ba4425b
|
7
|
+
data.tar.gz: dd228653949ce59936aa21b1e63c2f624c522c4fa050eba9f484180e87eccf3b06a44f173cdbbd682d1f6b1045540aaf6af33a194c6ba09ba7c6468031b1adbe
|
data/README.md
CHANGED
@@ -238,6 +238,92 @@ services:
|
|
238
238
|
|
239
239
|
The container will run using the same user ID as your host machine.
|
240
240
|
|
241
|
+
### Modules
|
242
|
+
|
243
|
+
Modules are defined as array in `modules` section of dip.yml, modules are stored in `.dip` subdirectory of dip.yml directory.
|
244
|
+
|
245
|
+
The main purpose of modules is to improve maintainability for a group of projects.
|
246
|
+
Imagine having multiple gems which are managed with dip, each of them has the same commands, so to change one command in dip you need to update all gems individualy.
|
247
|
+
|
248
|
+
With `modules` you can define a group of modules for dip.
|
249
|
+
|
250
|
+
For example having setup as this:
|
251
|
+
|
252
|
+
```yml
|
253
|
+
# ./dip.yml
|
254
|
+
modules:
|
255
|
+
- sasts
|
256
|
+
- rails
|
257
|
+
|
258
|
+
...
|
259
|
+
```
|
260
|
+
|
261
|
+
```yml
|
262
|
+
# ./.dip/sasts.yml
|
263
|
+
interaction:
|
264
|
+
brakeman:
|
265
|
+
description: Check brakeman sast
|
266
|
+
command: docker run ...
|
267
|
+
```
|
268
|
+
|
269
|
+
```yml
|
270
|
+
# ./.dip/rails.yml
|
271
|
+
interaction:
|
272
|
+
annotate:
|
273
|
+
description: Run annotate command
|
274
|
+
service: backend
|
275
|
+
command: bundle exec annotate
|
276
|
+
```
|
277
|
+
|
278
|
+
Will be expanded to:
|
279
|
+
|
280
|
+
```yml
|
281
|
+
# resultant configuration
|
282
|
+
interaction:
|
283
|
+
brakeman:
|
284
|
+
description: Check brakeman sast
|
285
|
+
command: docker run ...
|
286
|
+
annotate:
|
287
|
+
description: Run annotate command
|
288
|
+
service: backend
|
289
|
+
command: bundle exec annotate
|
290
|
+
```
|
291
|
+
|
292
|
+
Imagine `.dip` to be a submodule so it can be managed only in one place.
|
293
|
+
|
294
|
+
If you want to override module command, you can redefine it in dip.yml
|
295
|
+
|
296
|
+
```yml
|
297
|
+
# ./dip.yml
|
298
|
+
modules:
|
299
|
+
- sasts
|
300
|
+
|
301
|
+
interaction:
|
302
|
+
brakeman:
|
303
|
+
description: Check brakeman sast
|
304
|
+
command: docker run another-image ...
|
305
|
+
```
|
306
|
+
|
307
|
+
```yml
|
308
|
+
# ./.dip/sasts.yml
|
309
|
+
interaction:
|
310
|
+
brakeman:
|
311
|
+
description: Check brakeman sast
|
312
|
+
command: docker run some-image ...
|
313
|
+
```
|
314
|
+
|
315
|
+
Will be expanded to:
|
316
|
+
|
317
|
+
```yml
|
318
|
+
# resultant configuration
|
319
|
+
interaction:
|
320
|
+
brakeman:
|
321
|
+
description: Check brakeman sast
|
322
|
+
command: docker run another-image ...
|
323
|
+
```
|
324
|
+
|
325
|
+
Nested modules are not supported.
|
326
|
+
|
241
327
|
### dip run
|
242
328
|
|
243
329
|
Run commands defined within the `interaction` section of dip.yml
|
data/lib/dip/config.rb
CHANGED
@@ -43,6 +43,10 @@ module Dip
|
|
43
43
|
file_path&.exist?
|
44
44
|
end
|
45
45
|
|
46
|
+
def modules_dir
|
47
|
+
file_path.dirname / ".dip"
|
48
|
+
end
|
49
|
+
|
46
50
|
private
|
47
51
|
|
48
52
|
attr_reader :override
|
@@ -90,6 +94,10 @@ module Dip
|
|
90
94
|
finder.file_path
|
91
95
|
end
|
92
96
|
|
97
|
+
def module_file(filename)
|
98
|
+
finder.modules_dir / "#{filename}.yml"
|
99
|
+
end
|
100
|
+
|
93
101
|
def exist?
|
94
102
|
finder.exist?
|
95
103
|
end
|
@@ -125,10 +133,28 @@ module Dip
|
|
125
133
|
"Please upgrade your dip!"
|
126
134
|
end
|
127
135
|
|
136
|
+
base_config = {}
|
137
|
+
|
138
|
+
if (modules = config[:modules])
|
139
|
+
raise Dip::Error, "Modules should be specified as array" unless modules.is_a?(Array)
|
140
|
+
|
141
|
+
modules.each do |m|
|
142
|
+
file = module_file(m)
|
143
|
+
raise Dip::Error, "Could not find module `#{m}`" unless file.exist?
|
144
|
+
|
145
|
+
module_config = self.class.load_yaml(file)
|
146
|
+
raise Dip::Error, "Nested modules are not supported" if module_config[:modules]
|
147
|
+
|
148
|
+
base_config.deep_merge!(module_config)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
base_config.deep_merge!(config)
|
153
|
+
|
128
154
|
override_finder = ConfigFinder.new(work_dir, override: true)
|
129
|
-
|
155
|
+
base_config.deep_merge!(self.class.load_yaml(override_finder.file_path)) if override_finder.exist?
|
130
156
|
|
131
|
-
@config = CONFIG_DEFAULTS.merge(
|
157
|
+
@config = CONFIG_DEFAULTS.merge(base_config)
|
132
158
|
end
|
133
159
|
|
134
160
|
def config_missing_error(config_key)
|
data/lib/dip/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.
|
4
|
+
version: 8.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bibendi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|