docker_core 0.0.31 → 0.0.35

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/docker_core.rb +97 -25
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3844eb4ee913899cab8113bb7ce6ef006eca4a3c20520ccbd1e9c9b74f5245e4
4
- data.tar.gz: 1ee372fce84dcc125d3ded1f14d65c583ef919949d4d722e2be1672f40fea992
3
+ metadata.gz: 7d26f53611ff2fae746c097de480885cb51ab1e142a4dea4e94d0963b5271022
4
+ data.tar.gz: f60a3b3dc891178eda615cce425080f556dd2c0e7536e7f8bd6678b7a3a94b2e
5
5
  SHA512:
6
- metadata.gz: c6b3c402892459520958a46ed72d79fa2f7b9ec16daa447b34cae359a3a0b0f461a077f2a77ea39cf69c4148e399d0e4fb0cecbcd3ac5ce15291a3eb02681566
7
- data.tar.gz: a2a5d399de5ee88cc83795a175ec3ec0f829aa3756adda5b575f68325893125b206526e588a4242303d7996616931c6f67a29d48caf6005b1713d3d7edcbdbcd
6
+ metadata.gz: 57b4897a6dab83a917487b0d9e3592f0c4543e6838411d4ccd0720306f912827d0bfa1563e47e0db1e46b16a3b7ea13a4769bffecdb89defd2cb804240276297
7
+ data.tar.gz: '09f727751538859678f5808942293db69a022d9b2c38615f88e6f07c070ec40e9e38e3b408dd3633c065319589f05bd1d5b4c14bd322f54e2a96b072f8ee3e50'
data/lib/docker_core.rb CHANGED
@@ -14,6 +14,56 @@ module DockerCore
14
14
  REGISTRY = 'docker.io'
15
15
  NAMESPACE = 'library'
16
16
 
17
+ module Base
18
+ module Command
19
+ module ClassMethod
20
+ # @return [String]
21
+ def from_image
22
+ Error.no_method(__method__)
23
+ end
24
+
25
+ # @return [String]
26
+ def work_folder
27
+ Error.no_method(__method__)
28
+ end
29
+
30
+ # @param [Array] arguments
31
+ # @param [Boolean] throw
32
+ # @param [Numeric] wait
33
+ # @param [Boolean] strip
34
+ # @param [Boolean] echo
35
+ def capture_command(*arguments, environment: {}, bind: {}, throw: false, wait: 0, strip: true, echo: false)
36
+ bind[Dir.pwd] = self.work_folder
37
+ Swarm.capture_command(self.from_image, *arguments, environment: environment, bind: bind, throw: throw, wait: wait, strip: strip, echo: echo)
38
+ end
39
+
40
+ # @param [Array] arguments
41
+ # @param [Boolean] throw
42
+ # @param [Numeric] wait
43
+ # @param [Boolean] echo
44
+ def run_command(*arguments, environment: {}, bind: {}, throw: true, wait: 0, echo: true)
45
+ bind[Dir.pwd] = self.work_folder
46
+ Swarm.run_command(self.from_image, *arguments, environment: environment, bind: bind, throw: throw, wait: wait, echo: echo)
47
+ end
48
+ end
49
+
50
+ def self.included(base)
51
+ base.extend(ClassMethod)
52
+ end
53
+ end
54
+ end
55
+
56
+ module Error
57
+ # @param [Symbol] method
58
+ def self.no_method(method)
59
+ raise("#{method} method should be implemented in concrete class")
60
+ end
61
+
62
+ def self.maximum_redirect
63
+ raise('maximum redirect reached')
64
+ end
65
+ end
66
+
17
67
  class Color < Thor::Shell::Color
18
68
  # @param [String] text
19
69
  # @param [Array<String>] colors
@@ -40,6 +90,9 @@ module DockerCore
40
90
  module Image
41
91
  end
42
92
 
93
+ module Orchestrator
94
+ end
95
+
43
96
  module Command
44
97
  end
45
98
 
@@ -48,8 +101,8 @@ module DockerCore
48
101
  # @param [String] registry
49
102
  # @param [String] namespace
50
103
  # @param [String] tag
51
- def self.use_image(image, registry: REGISTRY, namespace: NAMESPACE, tag: 'latest')
52
- return [registry, namespace, image].join('/') + ":#{tag}"
104
+ def self.from_image(image, registry: REGISTRY, namespace: NAMESPACE, tag: 'latest')
105
+ return "#{registry}/#{namespace}/#{image}:#{tag}"
53
106
  end
54
107
 
55
108
  def self.deploy_path
@@ -60,6 +113,14 @@ module DockerCore
60
113
  return File.expand_path('~/.swarm')
61
114
  end
62
115
 
116
+ # def self.profile_path
117
+ # return File.realpath('profile.sh', self.deploy_path)
118
+ # end
119
+ #
120
+ # def self.runner_path
121
+ # return File.realpath('runner.rb', self.deploy_path)
122
+ # end
123
+
63
124
  # @param [String] swarm
64
125
  def self.write_swarm(swarm = '')
65
126
  return File.write(self.swarm_path, "#{swarm}\n")
@@ -74,7 +135,7 @@ module DockerCore
74
135
  return { docker: Shell.is_active_unit('docker') }
75
136
  end
76
137
 
77
- def self.detect_swarm
138
+ def self.detect_orchestrator
78
139
  swarm = self.read_swarm.to_sym
79
140
  detect = self.detect_services
80
141
 
@@ -88,26 +149,24 @@ module DockerCore
88
149
 
89
150
  def self.swarm_status
90
151
  color = Color::GREEN
91
- detect = self.detect_swarm
92
-
93
- Color.echo("Swarm: #{detect}", color)
152
+ Color.echo("Swarm: #{self.detect_orchestrator}", color)
94
153
  Color.echo(self.detect_services.to_yaml, color)
95
154
  end
96
155
 
97
- # @param [String] swarm
98
- def self.update_swarm(swarm = '')
99
- if false == swarm.empty?
100
- self.write_swarm(swarm)
156
+ # @param [String] orchestrator
157
+ def self.update_swarm(orchestrator = '')
158
+ if false == orchestrator.empty?
159
+ self.write_swarm(orchestrator)
101
160
  end
102
161
 
103
- swarm = self.detect_swarm
104
- self.write_swarm(swarm)
162
+ orchestrator = self.detect_orchestrator
163
+ self.write_swarm(orchestrator)
105
164
 
106
- if swarm.empty?
107
- swarm = 'none'
165
+ if orchestrator.empty?
166
+ orchestrator = '<none>'
108
167
  end
109
168
 
110
- Color.echo("Swarm: #{swarm}", Color::GREEN)
169
+ Color.echo("Swarm: #{orchestrator}", Color::GREEN)
111
170
  end
112
171
 
113
172
  # @param [String] base
@@ -122,29 +181,44 @@ module DockerCore
122
181
  return items
123
182
  end
124
183
 
184
+ # @param [Array<String>] arguments
185
+ # @param [Array<String>] folders
186
+ def self.prepare_folders(*services, folders: %w[stack volume])
187
+ deploy = self.deploy_path
188
+ folders.each do |folder|
189
+ services.each do |service|
190
+ FileUtils.mkdir_p(File.join(deploy, folder, service))
191
+ end
192
+ end
193
+ end
194
+
125
195
  # @param [Array] arguments
196
+ # @param [Hash] environment
197
+ # @param [Hash] bind
126
198
  # @param [Boolean] throw
127
199
  # @param [Numeric] wait
128
200
  # @param [Boolean] strip
129
201
  # @param [Boolean] echo
130
202
  # @return [String]
131
- def self.capture_command(*arguments, environment: {}, throw: false, wait: 0, strip: true, echo: false)
132
- raise "No implement #{__method__} method"
203
+ def self.capture_command(*arguments, environment: {}, bind: {}, throw: false, wait: 0, strip: true, echo: false)
204
+ Error.no_method(__method__)
133
205
  end
134
206
 
135
207
  # @param [Array] arguments
208
+ # @param [Hash] environment
209
+ # @param [Hash] bind
136
210
  # @param [Boolean] throw
137
211
  # @param [Numeric] wait
138
212
  # @param [Boolean] echo
139
213
  # @return [Boolean]
140
- def self.run_command(*arguments, environment: {}, throw: true, wait: 0, echo: true)
141
- raise "No implement #{__method__} method"
214
+ def self.run_command(*arguments, environment: {}, bind: {}, throw: true, wait: 0, echo: true)
215
+ Error.no_method(__method__)
142
216
  end
143
217
 
144
218
  #noinspection RubyClassVariableUsageInspection
145
- def self.swarm
146
- @@swarm ||= self.detect_swarm
147
- return "#{@@swarm}"
219
+ def self.orchestrator
220
+ @@orchestrator ||= self.detect_orchestrator
221
+ return "#{@@orchestrator}"
148
222
  end
149
223
 
150
224
  end
@@ -391,7 +465,7 @@ module DockerCore
391
465
  max_redirect = max_redirect - 1
392
466
 
393
467
  if 0 == max_redirect
394
- raise('maximum redirect reached')
468
+ Error.maximum_redirect
395
469
  end
396
470
 
397
471
  return self.resolve_link(response['location'], max_redirect)
@@ -538,8 +612,6 @@ module DockerCore
538
612
  data = JSON.parse(Net::HTTP.get(uri))['tag_name']
539
613
  return "#{data}"
540
614
 
541
-
542
-
543
615
  end
544
616
  end
545
617
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.31
4
+ version: 0.0.35
5
5
  platform: ruby
6
6
  authors:
7
7
  - agrozyme
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-08 00:00:00.000000000 Z
11
+ date: 2021-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fileutils