all_images 0.0.2 → 0.2.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: 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