all_images 0.4.1 → 0.6.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/CHANGES.md +96 -0
- data/all_images.gemspec +6 -6
- data/lib/all_images/app.rb +39 -9
- data/lib/all_images/version.rb +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbf39eaf44bd3eef5cba7b22e942621717fd838cde984764c684ba2a7f8842f7
|
4
|
+
data.tar.gz: f8c257c224e80f2ae251ec8e05b8869d3348ae0408d4a0dadd789ef74ce182c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39b423c850d91d8a7261c2b4677ba9935486797e0dd08ab2cca2ed6e9af78c162296cd89daa7e7ce71dd23999fed098f4158edc57d34222d99ef38db495bca10
|
7
|
+
data.tar.gz: 4a2d1611e0452b452963c099aed19163af335290015b25b72757db37803827a304d77282c3cc0919cfc0b24855703d8fb727cd74dd4c11664edcee7b3bbbac08
|
data/CHANGES.md
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
# Changes
|
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
|
+
|
22
|
+
## 2024-09-01 v0.5.0
|
23
|
+
|
24
|
+
* **Update image processing for parallel execution**:
|
25
|
+
+ Added random suffix to image names to prevent conflicts between concurrent processes.
|
26
|
+
* Added `CHANGES.md` file
|
27
|
+
|
28
|
+
## 2024-08-08 v0.4.1
|
29
|
+
|
30
|
+
* **License File Added**: A license file was added in written form.
|
31
|
+
|
32
|
+
## 2024-02-07 v0.4.0
|
33
|
+
|
34
|
+
* Added support for outputting colors in addition to existing functionality.
|
35
|
+
|
36
|
+
## 2023-08-17 v0.3.0
|
37
|
+
|
38
|
+
* **New Feature**: Allow running scripts within a Docker container, enabling
|
39
|
+
more flexible and isolated testing environments.
|
40
|
+
|
41
|
+
## 2023-08-17 v0.2.5
|
42
|
+
|
43
|
+
* Corrected actual checking logic.
|
44
|
+
|
45
|
+
## 2023-08-17 v0.2.4
|
46
|
+
|
47
|
+
* **Improved Error Handling**:
|
48
|
+
* Added checks to prevent premature failure in critical sections of the code.
|
49
|
+
|
50
|
+
## 2023-06-01 v0.2.3
|
51
|
+
|
52
|
+
* **New Features**
|
53
|
+
+ Added support for Ruby 3.2
|
54
|
+
* **Changes**
|
55
|
+
+ Bumped build version
|
56
|
+
+ Removed support for Ruby 2.5
|
57
|
+
* **Bug Fixes**
|
58
|
+
+ Repaired `fail_fast` mode
|
59
|
+
|
60
|
+
## 2023-04-19 v0.2.2
|
61
|
+
|
62
|
+
* **New Version Features**
|
63
|
+
+ Progress into the future of ruby development
|
64
|
+
+ Progress into the future
|
65
|
+
* **Significant Changes**
|
66
|
+
+ Removed development dependency (again)
|
67
|
+
|
68
|
+
## 2022-11-17 v0.2.1
|
69
|
+
|
70
|
+
* Added a new `help` command.
|
71
|
+
|
72
|
+
## 2022-11-17 v0.2.0
|
73
|
+
|
74
|
+
* **New Features**
|
75
|
+
+ Added commands to run and debug single images
|
76
|
+
+ Added a debug debugger feature
|
77
|
+
|
78
|
+
## 2022-11-17 v0.1.0
|
79
|
+
|
80
|
+
* Added `fail_fast` configuration option.
|
81
|
+
|
82
|
+
## 2022-07-11 v0.0.2
|
83
|
+
|
84
|
+
* **Security Fix**: Local config files are now properly sanitized to prevent potential security vulnerabilities.
|
85
|
+
|
86
|
+
## 2022-05-16 v0.0.1
|
87
|
+
|
88
|
+
* **Bug Fix**: Fixed bug in `required_ruby_version` functionality, which was causing issues with certain RubyGems releases.
|
89
|
+
|
90
|
+
### Significant Changes
|
91
|
+
* Removed buggy implementation of `required_ruby_version`
|
92
|
+
* Improved stability and compatibility with RubyGems releases
|
93
|
+
|
94
|
+
## 2022-05-15 v0.0.0
|
95
|
+
|
96
|
+
* Start
|
data/all_images.gemspec
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
# stub: all_images 0.
|
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.
|
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-
|
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]
|
15
15
|
s.extra_rdoc_files = ["README.md".freeze, "lib/all_images.rb".freeze, "lib/all_images/app.rb".freeze, "lib/all_images/config.rb".freeze, "lib/all_images/version.rb".freeze]
|
16
|
-
s.files = [".utilsrc".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "all_images.gemspec".freeze, "bin/all_images".freeze, "lib/all_images.rb".freeze, "lib/all_images/app.rb".freeze, "lib/all_images/config.rb".freeze, "lib/all_images/version.rb".freeze, "spec/app_spec.rb".freeze, "spec/spec_helper.rb".freeze]
|
16
|
+
s.files = [".utilsrc".freeze, "CHANGES.md".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "all_images.gemspec".freeze, "bin/all_images".freeze, "lib/all_images.rb".freeze, "lib/all_images/app.rb".freeze, "lib/all_images/config.rb".freeze, "lib/all_images/version.rb".freeze, "spec/app_spec.rb".freeze, "spec/spec_helper.rb".freeze]
|
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.
|
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.
|
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])
|
data/lib/all_images/app.rb
CHANGED
@@ -1,28 +1,29 @@
|
|
1
1
|
require 'term/ansicolor'
|
2
2
|
require 'tmpdir'
|
3
3
|
require 'fileutils'
|
4
|
+
require 'tins'
|
5
|
+
require 'tins/xt/full'
|
6
|
+
require 'shellwords'
|
4
7
|
|
5
8
|
class AllImages::App
|
6
9
|
include Term::ANSIColor
|
7
10
|
include FileUtils
|
8
11
|
|
9
|
-
alias sh system
|
10
|
-
|
11
12
|
def initialize(args)
|
12
13
|
@args = args.dup
|
13
14
|
@command = pick_command
|
14
15
|
@commands = %w[ ls help run debug run_all ].sort
|
16
|
+
@suffix = Tins::Token.new(alphabet: Tins::Token::BASE32_ALPHABET, bits: 32)
|
15
17
|
end
|
16
18
|
|
17
19
|
def run
|
18
20
|
@config = load_config or return 23
|
19
|
-
|
20
21
|
result = 0
|
21
22
|
case @command
|
22
23
|
when 'ls'
|
23
24
|
puts Array(@config['images']).map(&:first)
|
24
25
|
when 'help'
|
25
|
-
puts "Usage: #{File.basename($0)} #{@commands * ?|} IMAGE"
|
26
|
+
puts "Usage: #{File.basename($0)} #{@commands * ?|} [IMAGE]"
|
26
27
|
else
|
27
28
|
Array(@config['images']).each do |image, script|
|
28
29
|
case @command
|
@@ -43,16 +44,45 @@ class AllImages::App
|
|
43
44
|
|
44
45
|
private
|
45
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
|
+
|
72
|
+
def name
|
73
|
+
[ 'all_images', @suffix ] * ?-
|
74
|
+
end
|
75
|
+
|
46
76
|
def run_image(image, script, interactive: false)
|
47
77
|
dockerfile = @config.fetch('dockerfile').to_s
|
48
|
-
tag
|
49
|
-
|
78
|
+
tag = provide_image image, dockerfile, script
|
79
|
+
envs = env.full? { |e| +' ' << e.map { |n, v| '-e %s=%s' % [ n, v.inspect ] } * ' ' }
|
50
80
|
if interactive
|
51
81
|
puts "You can run /script interactively now."
|
52
|
-
sh "docker run --name
|
82
|
+
sh "docker run --name #{name} -it#{envs} -v `pwd`:/work '#{tag}' sh"
|
53
83
|
return 0
|
54
84
|
else
|
55
|
-
if sh "docker run --name
|
85
|
+
if sh "docker run --name #{name} -it#{envs} -v `pwd`:/work '#{tag}' sh -c /script"
|
56
86
|
puts green('SUCCESS')
|
57
87
|
return 0
|
58
88
|
else
|
@@ -61,7 +91,7 @@ class AllImages::App
|
|
61
91
|
end
|
62
92
|
end
|
63
93
|
ensure
|
64
|
-
sh
|
94
|
+
sh "docker rm -f #{name} >/dev/null"
|
65
95
|
end
|
66
96
|
|
67
97
|
def pick_command
|
data/lib/all_images/version.rb
CHANGED
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.
|
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-
|
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.
|
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.
|
26
|
+
version: '1.19'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,6 +121,7 @@ extra_rdoc_files:
|
|
121
121
|
- lib/all_images/version.rb
|
122
122
|
files:
|
123
123
|
- ".utilsrc"
|
124
|
+
- CHANGES.md
|
124
125
|
- Gemfile
|
125
126
|
- LICENSE
|
126
127
|
- README.md
|
@@ -156,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
157
|
- !ruby/object:Gem::Version
|
157
158
|
version: '0'
|
158
159
|
requirements: []
|
159
|
-
rubygems_version: 3.5.
|
160
|
+
rubygems_version: 3.5.18
|
160
161
|
signing_key:
|
161
162
|
specification_version: 4
|
162
163
|
summary: Runs a script in all of the docker images
|