docker_core 0.0.30 → 0.0.34

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 +89 -28
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b573f05e0da7921662af50b79f5d408ee1beefc37cd1032a60f2af4608746c31
4
- data.tar.gz: e2bcafd20bbeaf0d025e50806844117f4cee5f47838ff57b474c3bfa416ba3a6
3
+ metadata.gz: 5e196caa3ad51a15efa9e55d0def50e88d1798ae8df091b035b7c8b6cd2b2417
4
+ data.tar.gz: 2f1239749845ee727bdf21102d68fdf68ea686ab10bc1fb24509a3d265be9cfc
5
5
  SHA512:
6
- metadata.gz: 78ef0c1353140635610d4c34ac5789e9c29739e160dea69183b7a14ac6b914ed00a8c2da020ab77b8700a76ac4c1fd0780450199ccc30ada5e5faec37a43e257
7
- data.tar.gz: 84c1b1fe408427e78b074a4346be1187f9ca587d928769269cb107335db2038bc3fb787a4a9d70aa5a10d5f0ed6ee6d2d81f58c66e463191bbed80a4fd5e5cbc
6
+ metadata.gz: 9ecbab6bd1ff332c4ef71749968f47ca85c483bf79bf0d8ec40046635a269c20366daac6867fe2203c3cac1024f756296c30cbefc53315c41cc6ddd94d0a6131
7
+ data.tar.gz: 292e36438fbaa30436978d94859e895ce06facf013b8d5af26ac8db727ec6df886e65cc3515573fe78c75a5c6138c72bc5965c163009fa80c666e09b155f9a62
data/lib/docker_core.rb CHANGED
@@ -14,6 +14,52 @@ 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
+ end
62
+
17
63
  class Color < Thor::Shell::Color
18
64
  # @param [String] text
19
65
  # @param [Array<String>] colors
@@ -40,6 +86,9 @@ module DockerCore
40
86
  module Image
41
87
  end
42
88
 
89
+ module Orchestrator
90
+ end
91
+
43
92
  module Command
44
93
  end
45
94
 
@@ -48,19 +97,26 @@ module DockerCore
48
97
  # @param [String] registry
49
98
  # @param [String] namespace
50
99
  # @param [String] tag
51
- def self.use_image(image, registry: REGISTRY, namespace: NAMESPACE, tag: 'latest')
52
- return [registry, namespace, image].join('/') + ":#{tag}"
100
+ def self.from_image(image, registry: REGISTRY, namespace: NAMESPACE, tag: 'latest')
101
+ return "#{registry}/#{namespace}/#{image}:#{tag}"
53
102
  end
54
103
 
55
- # @param [String] service
56
- def self.service_actived(service)
57
- return 'active' == Process.capture("systemctl is-active #{service}").downcase
104
+ def self.deploy_path
105
+ return File.expand_path('~/deploy')
58
106
  end
59
107
 
60
108
  def self.swarm_path
61
109
  return File.expand_path('~/.swarm')
62
110
  end
63
111
 
112
+ def self.profile_path
113
+ return File.realpath('profile.sh', self.deploy_path)
114
+ end
115
+
116
+ def self.runner_path
117
+ return File.realpath('runner.rb', self.deploy_path)
118
+ end
119
+
64
120
  # @param [String] swarm
65
121
  def self.write_swarm(swarm = '')
66
122
  return File.write(self.swarm_path, "#{swarm}\n")
@@ -72,10 +128,10 @@ module DockerCore
72
128
  end
73
129
 
74
130
  def self.detect_services
75
- return { docker: self.service_actived('docker') }
131
+ return { docker: Shell.is_active_unit('docker') }
76
132
  end
77
133
 
78
- def self.detect_swarm
134
+ def self.detect_orchestrator
79
135
  swarm = self.read_swarm.to_sym
80
136
  detect = self.detect_services
81
137
 
@@ -89,26 +145,24 @@ module DockerCore
89
145
 
90
146
  def self.swarm_status
91
147
  color = Color::GREEN
92
- detect = self.detect_swarm
93
-
94
- Color.echo("Swarm: #{detect}", color)
148
+ Color.echo("Swarm: #{self.detect_orchestrator}", color)
95
149
  Color.echo(self.detect_services.to_yaml, color)
96
150
  end
97
151
 
98
- # @param [String] swarm
99
- def self.update_swarm(swarm = '')
100
- if false == swarm.empty?
101
- self.write_swarm(swarm)
152
+ # @param [String] orchestrator
153
+ def self.update_swarm(orchestrator = '')
154
+ if false == orchestrator.empty?
155
+ self.write_swarm(orchestrator)
102
156
  end
103
157
 
104
- swarm = self.detect_swarm
105
- self.write_swarm(swarm)
158
+ orchestrator = self.detect_orchestrator
159
+ self.write_swarm(orchestrator)
106
160
 
107
- if swarm.empty?
108
- swarm = 'none'
161
+ if orchestrator.empty?
162
+ orchestrator = '<none>'
109
163
  end
110
164
 
111
- Color.echo("Swarm: #{swarm}", Color::GREEN)
165
+ Color.echo("Swarm: #{orchestrator}", Color::GREEN)
112
166
  end
113
167
 
114
168
  # @param [String] base
@@ -124,28 +178,32 @@ module DockerCore
124
178
  end
125
179
 
126
180
  # @param [Array] arguments
181
+ # @param [Hash] environment
182
+ # @param [Hash] bind
127
183
  # @param [Boolean] throw
128
184
  # @param [Numeric] wait
129
185
  # @param [Boolean] strip
130
186
  # @param [Boolean] echo
131
187
  # @return [String]
132
- def self.capture_command(*arguments, environment: {}, throw: false, wait: 0, strip: true, echo: false)
133
- raise "No implement #{__method__} method"
188
+ def self.capture_command(*arguments, environment: {}, bind: {}, throw: false, wait: 0, strip: true, echo: false)
189
+ Error.no_method(__method__)
134
190
  end
135
191
 
136
192
  # @param [Array] arguments
193
+ # @param [Hash] environment
194
+ # @param [Hash] bind
137
195
  # @param [Boolean] throw
138
196
  # @param [Numeric] wait
139
197
  # @param [Boolean] echo
140
198
  # @return [Boolean]
141
- def self.run_command(*arguments, environment: {}, throw: true, wait: 0, echo: true)
142
- raise "No implement #{__method__} method"
199
+ def self.run_command(*arguments, environment: {}, bind: {}, throw: true, wait: 0, echo: true)
200
+ Error.no_method(__method__)
143
201
  end
144
202
 
145
203
  #noinspection RubyClassVariableUsageInspection
146
- def self.swarm
147
- @@swarm ||= self.detect_swarm
148
- return "#{@@swarm}"
204
+ def self.orchestrator
205
+ @@orchestrator ||= self.detect_orchestrator
206
+ return "#{@@orchestrator}"
149
207
  end
150
208
 
151
209
  end
@@ -310,6 +368,11 @@ module DockerCore
310
368
  return hash.fetch(machine.to_sym, machine)
311
369
  end
312
370
 
371
+ # @param [String] unit
372
+ def self.is_active_unit(unit)
373
+ return 'active' == Process.capture("systemctl is-active #{unit}").downcase
374
+ end
375
+
313
376
  # @param [Array<String>] arguments
314
377
  # @return [Array<String>]
315
378
  def self.find_paths(*arguments)
@@ -534,8 +597,6 @@ module DockerCore
534
597
  data = JSON.parse(Net::HTTP.get(uri))['tag_name']
535
598
  return "#{data}"
536
599
 
537
-
538
-
539
600
  end
540
601
  end
541
602
 
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.30
4
+ version: 0.0.34
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-07 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