all_images 0.0.2 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e0f698c8e33bc71079143dd81f8a146d2efc6dfa96d04ef5a918bcdb86c0d8b
4
- data.tar.gz: cd89faa55b16e0fecf387eb6bff9deb6024853bfa1a5312611532702288c4f8f
3
+ metadata.gz: de05a97c00f24025bb2e3128230abdbd1c33bbc563cdd3bf7818b24008a784b6
4
+ data.tar.gz: 609415cdec20cc1b986eebcdb977cdb795c9aa7a5fa82a44107a541ec4dcf5d6
5
5
  SHA512:
6
- metadata.gz: 705d2c6e9849647a3565902869ea80f52d1ce7accf8d248da5b56b65c49ced16e8fe47d0ef7ebedc47bb6832fb045ec85e6143ba6c34d079acffaf06bde656aa
7
- data.tar.gz: 5b656b2df0a147cdbcccfe7d02296b1b3c1e3ea45deb81437b15cf839cf9b1155a35ef1e5e43ac68861697098bd53a6bb1da5e7a94bcdb81b8a3e3d14edc9daa
6
+ metadata.gz: 69ebf0b5e2b84c6bb3ab86e56f36016cd4152c3def0e63488bfff6ae3b0e234f50b5ddf77ee97549ca2be26dfd870af521d2aa71a968a47b795203250fa80a53
7
+ data.tar.gz: 3bee4984a3b063ac369da24d24c0d92a13185b5c76df9c0bd0c61aa2a8257e3fbd23c6ee09d5e07a3889d387fa7fcafabb9b237926cf5acf1980558d2064c6f5
data/Rakefile CHANGED
@@ -21,6 +21,7 @@ GemHadar do
21
21
  development_dependency 'rake'
22
22
  development_dependency 'simplecov'
23
23
  development_dependency 'rspec'
24
+ development_dependency 'debug'
24
25
  licenses << 'MIT'
25
26
  executables << 'all_images'
26
27
  end
data/all_images.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: all_images 0.0.2 ruby lib
2
+ # stub: all_images 0.2.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "all_images".freeze
6
- s.version = "0.0.2"
6
+ s.version = "0.2.0"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2022-07-11"
11
+ s.date = "2022-11-17"
12
12
  s.description = "A script that runs a script in all of the configured docker images".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.executables = ["all_images".freeze]
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.homepage = "http://github.com/flori/all_images".freeze
18
18
  s.licenses = ["MIT".freeze]
19
19
  s.rdoc_options = ["--title".freeze, "AllImages -- Runs a script in all of the docker images".freeze, "--main".freeze, "README.md".freeze]
20
- s.rubygems_version = "3.3.7".freeze
20
+ s.rubygems_version = "3.3.17".freeze
21
21
  s.summary = "Runs a script in all of the docker images".freeze
22
22
  s.test_files = ["spec/spec_helper.rb".freeze]
23
23
 
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
30
30
  s.add_development_dependency(%q<rake>.freeze, [">= 0"])
31
31
  s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
32
32
  s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
33
+ s.add_development_dependency(%q<debug>.freeze, [">= 0"])
33
34
  s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.0"])
34
35
  s.add_runtime_dependency(%q<term-ansicolor>.freeze, [">= 0"])
35
36
  else
@@ -37,6 +38,7 @@ Gem::Specification.new do |s|
37
38
  s.add_dependency(%q<rake>.freeze, [">= 0"])
38
39
  s.add_dependency(%q<simplecov>.freeze, [">= 0"])
39
40
  s.add_dependency(%q<rspec>.freeze, [">= 0"])
41
+ s.add_dependency(%q<debug>.freeze, [">= 0"])
40
42
  s.add_dependency(%q<tins>.freeze, ["~> 1.0"])
41
43
  s.add_dependency(%q<term-ansicolor>.freeze, [">= 0"])
42
44
  end
@@ -10,29 +10,68 @@ class AllImages::App
10
10
 
11
11
  def initialize(args)
12
12
  @args = args.dup
13
+ @command = determine_command
13
14
  end
14
15
 
15
16
  def run
16
17
  result = 0
17
18
  @config = load_config or return 23
18
- dockerfile = @config.fetch('dockerfile').to_s
19
19
 
20
- Array(@config['images']).each do |image, script|
21
- tag = provide_image image, dockerfile
22
- if sh "docker run --name all_images -v `pwd`:/work '#{tag}' sh -c '#{script}'"
23
- puts green('SUCCESS')
24
- else
25
- puts red('FAILURE')
26
- result |= 1
20
+ if @command == 'ls'
21
+ puts Array(@config['images']).map(&:first)
22
+ else
23
+ Array(@config['images']).each do |image, script|
24
+ case @command
25
+ when 'run_all'
26
+ run_image(image, script)
27
+ when 'run_selected'
28
+ image == @selected and run_image(image, script)
29
+ when 'debug_selected'
30
+ image == @selected and run_image(image, script, interactive: true)
31
+ end
27
32
  end
28
- ensure
29
- sh 'docker rm -f all_images >/dev/null'
30
33
  end
31
34
  result
32
35
  end
33
36
 
34
37
  private
35
38
 
39
+ def run_image(image, script, interactive: false)
40
+ dockerfile = @config.fetch('dockerfile').to_s
41
+ tag = provide_image image, dockerfile
42
+ it = interactive ? ' -it ' : ' '
43
+ if sh "docker run --name all_images#{it}-v `pwd`:/work '#{tag}' sh -c '#{script}'"
44
+ puts green('SUCCESS')
45
+ else
46
+ puts red('FAILURE')
47
+ if @config['fail_fast']
48
+ return 1
49
+ else
50
+ result |= 1
51
+ end
52
+ end
53
+ ensure
54
+ sh 'docker rm -f all_images >/dev/null'
55
+ end
56
+
57
+ def determine_command
58
+ case command = @args.first
59
+ when nil
60
+ 'run_all'
61
+ when 'ls'
62
+ @args.shift
63
+ 'ls'
64
+ when 'run'
65
+ @args.shift
66
+ @selected = @args.shift or fail "Usage: #{File.basename($0)} #{command} IMAGE"
67
+ 'run_selected'
68
+ when 'debug'
69
+ @args.shift
70
+ @selected = @args.shift or fail "Usage: #{File.basename($0)} #{command} IMAGE"
71
+ 'debug_selected'
72
+ end
73
+ end
74
+
36
75
  def load_config
37
76
  config_filename = '.all_images.yml'
38
77
  if @args.empty?
@@ -1,6 +1,6 @@
1
1
  module AllImages
2
2
  # AllImages version
3
- VERSION = '0.0.2'
3
+ VERSION = '0.2.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: all_images
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-11 00:00:00.000000000 Z
11
+ date: 2022-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: debug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: tins
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -140,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
154
  - !ruby/object:Gem::Version
141
155
  version: '0'
142
156
  requirements: []
143
- rubygems_version: 3.3.7
157
+ rubygems_version: 3.3.17
144
158
  signing_key:
145
159
  specification_version: 4
146
160
  summary: Runs a script in all of the docker images