eac_docker 0.1.0 → 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: 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: