eac_docker 0.1.0 → 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: 69fd33f8ecdbc166aceda4863b765d0959337824ff8786a077c912dd0b9b1f13
4
- data.tar.gz: ec299a2e803f2786642aae0915bc1bff70edefbd0b575566858c1c49bf88dd81
3
+ metadata.gz: 30d5ee27849d893d0baaeae9c9693dcb5b3b84349eee98f07081d6566ee5b632
4
+ data.tar.gz: 749bf0ae7c23323717f41acfa32170e4053c4d43205269c643da486d1d73cd00
5
5
  SHA512:
6
- metadata.gz: 4e43555681cf731f50f319c92ad92d417c8cb5d505b9d75570d2674af60e057779e8876cfb28a401116da9a9d7a58897483bd29ce68bfdd7b68accd6f8673509
7
- data.tar.gz: 308eb14c54d1c2dd79cffd3016fc15824e7c7122120bc3235f36c883152600f4417d8993d4e907979c5decba821f8f56caebec8616d6710ccc7af798227d723f
6
+ metadata.gz: c054e0d39c8aad0cf2547b49ec509331bc8e98548208e7769c7d742fc585e2436dd1998630dac2792c1732e00df4e191f06766f04522404f0fc330b9e367146f
7
+ data.tar.gz: 3386804efb02936f16b3d2e3564c8fb07834309d778ce20c7edba1a0dbd5d8e68967b4b16779984804abc99acf7076324509932c42ea230067b80819e5b4a0a6
@@ -8,6 +8,7 @@ module EacDocker
8
8
  immutable_accessor :interactive, :temporary, :tty, type: :boolean
9
9
  immutable_accessor :env, type: :hash
10
10
  immutable_accessor :command_arg, :volume, type: :array
11
+ attr_reader :id
11
12
  common_constructor :image
12
13
 
13
14
  def immutable_constructor_args
@@ -16,6 +17,23 @@ module EacDocker
16
17
 
17
18
  alias immutable_volume volume
18
19
 
20
+ def hostname
21
+ ::EacDocker::Executables.docker.command(
22
+ 'inspect', '--format={{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}',
23
+ id
24
+ ).execute!.strip
25
+ end
26
+
27
+ def on_detached
28
+ command = ::EacDocker::Executables.docker.command(*(%w[run --detach] + run_command_args))
29
+ self.id = command.execute!.strip
30
+ begin
31
+ yield(self)
32
+ ensure
33
+ stop
34
+ end
35
+ end
36
+
19
37
  def volume(left_part, right_part = null)
20
38
  immutable_volume(right_part.if_present(left_part) { |v| "#{left_part}:#{v}" })
21
39
  end
@@ -29,8 +47,14 @@ module EacDocker
29
47
  command_args
30
48
  end
31
49
 
50
+ def stop
51
+ ::EacDocker::Executables.docker.command('stop', id).execute!
52
+ end
53
+
32
54
  private
33
55
 
56
+ attr_writer :id
57
+
34
58
  def run_command_boolean_args
35
59
  r = []
36
60
  r << '--interactive' if interactive?
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_docker/executables'
4
+ require 'eac_docker/images/base'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ module EacDocker
8
+ module Images
9
+ class Coded < ::EacDocker::Images::Base
10
+ enable_simple_cache
11
+ enable_immutable
12
+ immutable_accessor :tag
13
+ common_constructor :path do
14
+ self.path = path.to_pathname
15
+ end
16
+
17
+ def immutable_constructor_args
18
+ [path]
19
+ end
20
+
21
+ def provide
22
+ id
23
+ self
24
+ end
25
+
26
+ private
27
+
28
+ def id_uncached
29
+ ::EacDocker::Executables.docker.command(*build_args).execute!.strip
30
+ end
31
+
32
+ def build_args
33
+ args = %w[build --quiet]
34
+ args += ['--tag', tag] if tag.present?
35
+ args + [path.to_path]
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_docker/images/base'
4
+ require 'eac_docker/images/coded'
5
+ require 'eac_ruby_utils/core_ext'
6
+ require 'eac_ruby_utils/fs/temp'
7
+
8
+ module EacDocker
9
+ module Images
10
+ class Templatized < ::EacDocker::Images::Base
11
+ enable_immutable
12
+ immutable_accessor :tag
13
+
14
+ def provide
15
+ ::EacRubyUtils::Fs::Temp.on_directory do |provide_dir|
16
+ template.apply(self, provide_dir)
17
+ coded_image(provide_dir).tag(tag).provide
18
+ end
19
+ end
20
+
21
+ def coded_image(provide_dir)
22
+ ::EacDocker::Images::Coded.new(provide_dir)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module EacDocker
6
+ class Registry
7
+ common_constructor :name
8
+
9
+ def to_s
10
+ name
11
+ end
12
+
13
+ def sub(suffix)
14
+ self.class.new("#{name}#{suffix}")
15
+ end
16
+ end
17
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacDocker
4
- VERSION = '0.1.0'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eac_docker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-10 00:00:00.000000000 Z
11
+ date: 2020-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_ruby_utils
@@ -55,7 +55,10 @@ files:
55
55
  - lib/eac_docker/executables.rb
56
56
  - lib/eac_docker/images.rb
57
57
  - lib/eac_docker/images/base.rb
58
+ - lib/eac_docker/images/coded.rb
58
59
  - lib/eac_docker/images/named.rb
60
+ - lib/eac_docker/images/templatized.rb
61
+ - lib/eac_docker/registry.rb
59
62
  - lib/eac_docker/rspec.rb
60
63
  - lib/eac_docker/version.rb
61
64
  homepage: