all_images 0.5.0 → 0.6.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: 05e803f38074cc12ba26b4720f6fadc89e2e4a684ae9755b60d97773c4f8992f
4
- data.tar.gz: 42864bc243ebf51e1c72285bdbcc7cd1fe37620120bbdfe16d71a4867d73f1e9
3
+ metadata.gz: cbf39eaf44bd3eef5cba7b22e942621717fd838cde984764c684ba2a7f8842f7
4
+ data.tar.gz: f8c257c224e80f2ae251ec8e05b8869d3348ae0408d4a0dadd789ef74ce182c3
5
5
  SHA512:
6
- metadata.gz: 1c7900c9400afa3ec720879299212395cb63a77bcba30a02c8d31f687df1d23c697b41e139b5e262e418a42e91d50166af6fd6438c42de73e79364401c24b6df
7
- data.tar.gz: efc3e9241153ee54b8cc5ce2701040be5ab0b5cd0181b89744c891f2caf8fedbfcc7fde069ca57783997dec763485c1f3da6785c89edfab6151929963ea5afa6
6
+ metadata.gz: 39b423c850d91d8a7261c2b4677ba9935486797e0dd08ab2cca2ed6e9af78c162296cd89daa7e7ce71dd23999fed098f4158edc57d34222d99ef38db495bca10
7
+ data.tar.gz: 4a2d1611e0452b452963c099aed19163af335290015b25b72757db37803827a304d77282c3cc0919cfc0b24855703d8fb727cd74dd4c11664edcee7b3bbbac08
data/CHANGES.md CHANGED
@@ -1,9 +1,28 @@
1
1
  # Changes
2
2
 
3
+ ## 2024-10-14 v0.6.0
4
+
5
+ ### Significant Changes
6
+ * **Add support for environment variables to all_images**
7
+ + Require `'tins/xt/full'` and add new method `env` to set environment variables.
8
+ + Modified the `sh` method to use environment variables from the `env` method.
9
+ + Modified the `run_image` method to include environment variables in the Docker command.
10
+ * Update rake task to use spec instead of test
11
+ * Added `[IMAGE]` as an optional argument in the Usage message.
12
+
13
+ ### Other Changes
14
+ * Reformat CHANGES.md
15
+ * Add error reporting to `sh`
16
+ + Added require `'shellwords'`
17
+
18
+ #### Environment Variables
19
+ * Added `env` section to `.all_images.yml`
20
+ * Defined `FOO=bar` and `USER` environment variables
21
+
3
22
  ## 2024-09-01 v0.5.0
4
23
 
5
24
  * **Update image processing for parallel execution**:
6
- + Added random suffix to image names to prevent conflicts between concurrent processes.
25
+ + Added random suffix to image names to prevent conflicts between concurrent processes.
7
26
  * Added `CHANGES.md` file
8
27
 
9
28
  ## 2024-08-08 v0.4.1
@@ -31,20 +50,20 @@
31
50
  ## 2023-06-01 v0.2.3
32
51
 
33
52
  * **New Features**
34
- + Added support for Ruby 3.2
53
+ + Added support for Ruby 3.2
35
54
  * **Changes**
36
- + Bumped build version
37
- + Removed support for Ruby 2.5
55
+ + Bumped build version
56
+ + Removed support for Ruby 2.5
38
57
  * **Bug Fixes**
39
- + Repaired `fail_fast` mode
58
+ + Repaired `fail_fast` mode
40
59
 
41
60
  ## 2023-04-19 v0.2.2
42
61
 
43
62
  * **New Version Features**
44
- + Progress into the future of ruby development
45
- + Progress into the future
63
+ + Progress into the future of ruby development
64
+ + Progress into the future
46
65
  * **Significant Changes**
47
- + Removed development dependency (again)
66
+ + Removed development dependency (again)
48
67
 
49
68
  ## 2022-11-17 v0.2.1
50
69
 
@@ -53,8 +72,8 @@
53
72
  ## 2022-11-17 v0.2.0
54
73
 
55
74
  * **New Features**
56
- + Added commands to run and debug single images
57
- + Added a debug debugger feature
75
+ + Added commands to run and debug single images
76
+ + Added a debug debugger feature
58
77
 
59
78
  ## 2022-11-17 v0.1.0
60
79
 
data/all_images.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: all_images 0.5.0 ruby lib
2
+ # stub: all_images 0.6.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "all_images".freeze
6
- s.version = "0.5.0".freeze
6
+ s.version = "0.6.0".freeze
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 = "2024-08-31"
11
+ s.date = "2024-10-14"
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,13 +17,13 @@ Gem::Specification.new do |s|
17
17
  s.homepage = "https://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.5.16".freeze
20
+ s.rubygems_version = "3.5.18".freeze
21
21
  s.summary = "Runs a script in all of the docker images".freeze
22
22
  s.test_files = ["spec/app_spec.rb".freeze, "spec/spec_helper.rb".freeze]
23
23
 
24
24
  s.specification_version = 4
25
25
 
26
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.17.0".freeze])
26
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.19".freeze])
27
27
  s.add_development_dependency(%q<rake>.freeze, [">= 0".freeze])
28
28
  s.add_development_dependency(%q<simplecov>.freeze, [">= 0".freeze])
29
29
  s.add_development_dependency(%q<rspec>.freeze, [">= 0".freeze])
@@ -2,13 +2,13 @@ require 'term/ansicolor'
2
2
  require 'tmpdir'
3
3
  require 'fileutils'
4
4
  require 'tins'
5
+ require 'tins/xt/full'
6
+ require 'shellwords'
5
7
 
6
8
  class AllImages::App
7
9
  include Term::ANSIColor
8
10
  include FileUtils
9
11
 
10
- alias sh system
11
-
12
12
  def initialize(args)
13
13
  @args = args.dup
14
14
  @command = pick_command
@@ -18,13 +18,12 @@ class AllImages::App
18
18
 
19
19
  def run
20
20
  @config = load_config or return 23
21
-
22
21
  result = 0
23
22
  case @command
24
23
  when 'ls'
25
24
  puts Array(@config['images']).map(&:first)
26
25
  when 'help'
27
- puts "Usage: #{File.basename($0)} #{@commands * ?|} IMAGE"
26
+ puts "Usage: #{File.basename($0)} #{@commands * ?|} [IMAGE]"
28
27
  else
29
28
  Array(@config['images']).each do |image, script|
30
29
  case @command
@@ -45,20 +44,45 @@ class AllImages::App
45
44
 
46
45
  private
47
46
 
47
+ def env
48
+ vars = @config.fetch('env', [])
49
+ vars << 'TERM' if ENV.key?('TERM')
50
+ vars.each_with_object({}) { |v, h|
51
+ name, value = v.split(?=, 2)
52
+ if value
53
+ h[name] = value
54
+ else
55
+ h[name] = ENV[name]
56
+ end
57
+ }
58
+ end
59
+
60
+ def sh(*a)
61
+ if $DEBUG
62
+ STDERR.puts "Executing #{a.inspect}."
63
+ end
64
+ system(*a)
65
+ if $?.success?
66
+ true
67
+ else
68
+ raise "Command #{Shellwords.join(a).inspect} failed with: #{$?.exitstatus}"
69
+ end
70
+ end
71
+
48
72
  def name
49
73
  [ 'all_images', @suffix ] * ?-
50
74
  end
51
75
 
52
76
  def run_image(image, script, interactive: false)
53
77
  dockerfile = @config.fetch('dockerfile').to_s
54
- tag = provide_image image, dockerfile, script
55
- term = ENV.key?('TERM') ? %{ -e TERM=#{ENV['TERM'].inspect} } : ' '
78
+ tag = provide_image image, dockerfile, script
79
+ envs = env.full? { |e| +' ' << e.map { |n, v| '-e %s=%s' % [ n, v.inspect ] } * ' ' }
56
80
  if interactive
57
81
  puts "You can run /script interactively now."
58
- sh "docker run --name #{name} -it #{term}-v `pwd`:/work '#{tag}' sh"
82
+ sh "docker run --name #{name} -it#{envs} -v `pwd`:/work '#{tag}' sh"
59
83
  return 0
60
84
  else
61
- if sh "docker run --name #{name} -it #{term}-v `pwd`:/work '#{tag}' sh -c /script"
85
+ if sh "docker run --name #{name} -it#{envs} -v `pwd`:/work '#{tag}' sh -c /script"
62
86
  puts green('SUCCESS')
63
87
  return 0
64
88
  else
@@ -1,6 +1,6 @@
1
1
  module AllImages
2
2
  # AllImages version
3
- VERSION = '0.5.0'
3
+ VERSION = '0.6.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.5.0
4
+ version: 0.6.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: 2024-08-31 00:00:00.000000000 Z
11
+ date: 2024-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.17.0
19
+ version: '1.19'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.17.0
26
+ version: '1.19'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -157,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
157
  - !ruby/object:Gem::Version
158
158
  version: '0'
159
159
  requirements: []
160
- rubygems_version: 3.5.16
160
+ rubygems_version: 3.5.18
161
161
  signing_key:
162
162
  specification_version: 4
163
163
  summary: Runs a script in all of the docker images