docker_core 0.0.23 → 0.0.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/docker_core.rb +119 -47
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80affaf62801f9396342f5e34a9b4d7d9c60cbb7734eb072c53fd639a0128795
4
- data.tar.gz: fb93776e06070bcf7633f4307d0c2fb16e0c1c447c1548dd57618319c61dd7aa
3
+ metadata.gz: da0b663870f8facf55cf16967c2e2fae3049bbedb497c89759251903f7fa4875
4
+ data.tar.gz: 9c6539f512f9430de020c30ffc53677a7ecb03aa4cb6d90578ce622d0d1f2ecd
5
5
  SHA512:
6
- metadata.gz: 357c0774652360108f2a5cc9773b482999a3f454b0af977ab609b80618fbe8a2157af83d8bc1041afa1e0056f2aa7e7b61ec2f5fa60b56a7caff996296b07d8e
7
- data.tar.gz: 861b83b14df2c399f64a5a580dc61281414c0c581528118d38cbcdd044e09c79387fb334930c170b0197b3bd7f6c84a2739efb064112f60011131d26d034e926
6
+ metadata.gz: f71c262f8071fa6f2e45c897909f67b15776320c7fe9925c8d4abc3a4242190b3ba6bce25856b1f498aa35caca15c453689b73c8239891ac381f267593a21eac
7
+ data.tar.gz: a0ff5f5cfa2c8152d71b17053c9f1a44904b62889252d2f917cab3170aac36886a09d211dc165c2657df80f39f0427bb8c6ab941d3ec1db24e816e0344b47c0c
data/lib/docker_core.rb CHANGED
@@ -4,9 +4,11 @@ require('json')
4
4
  require('net/http')
5
5
  require('rubygems/package')
6
6
  require('thor')
7
+ require('yaml')
7
8
  require('zlib')
8
9
 
9
10
  module DockerCore
11
+ SUDO = false
10
12
  USER = 'core'
11
13
  GROUP = 'core'
12
14
 
@@ -37,6 +39,66 @@ module DockerCore
37
39
  end
38
40
 
39
41
  module Command
42
+ module Swarm
43
+ def self.swarm_path
44
+ return File.expand_path('~/.swarm')
45
+ end
46
+
47
+ # @param [String] service
48
+ def self.service_actived(service)
49
+ return 'active' == Process.capture("systemctl is-active #{service}").downcase
50
+ end
51
+
52
+ # @param [String] swarm
53
+ def self.write_swarm(swarm = '')
54
+ return File.write(self.swarm_path, "#{swarm}\n")
55
+ end
56
+
57
+ def self.read_swarm
58
+ file = self.swarm_path
59
+ return File.exists?(file) ? File.read(file).strip : ''
60
+ end
61
+
62
+ def self.detect_services
63
+ return { docker: self.service_actived('docker') }
64
+ end
65
+
66
+ def self.detect_swarm
67
+ swarm = self.read_swarm.to_sym
68
+ detect = self.detect_services
69
+
70
+ if detect.has_key?(swarm) && detect[swarm]
71
+ return "#{swarm}"
72
+ end
73
+
74
+ index = detect.key(true)
75
+ return "#{index}"
76
+ end
77
+
78
+ def self.swarm_status
79
+ color = Color::GREEN
80
+ detect = self.detect_swarm
81
+
82
+ Color.echo("Swarm: #{detect}", color)
83
+ Color.echo(self.detect_services.to_yaml, color)
84
+ end
85
+
86
+ # @param [String] swarm
87
+ def self.update_swarm(swarm = '')
88
+ if false == swarm.empty?
89
+ self.write_swarm(swarm)
90
+ end
91
+
92
+ swarm = self.detect_swarm
93
+ self.write_swarm(swarm)
94
+
95
+ if swarm.empty?
96
+ swarm = 'none'
97
+ end
98
+
99
+ Color.echo("Swarm: #{swarm}", Color::GREEN)
100
+ end
101
+ end
40
102
  end
41
103
 
42
104
  module Paser
@@ -101,73 +163,82 @@ module DockerCore
101
163
  end
102
164
 
103
165
  module Process
104
- # @param [Numeric] duration
105
- def self.wait(duration = 0)
106
- if duration.is_a?(Numeric)
107
- if 0 > duration
166
+ # @param [Numeric] second
167
+ def self.wait(second = 0)
168
+ if second.is_a?(Numeric)
169
+ if 0 > second
108
170
  return sleep
109
171
  end
110
- if 0 < duration
111
- return sleep(duration)
172
+ if 0 < second
173
+ return sleep(second)
112
174
  end
113
175
  end
114
176
  end
115
177
 
116
178
  # @param [Array] arguments
117
- # @param [Boolean, String] substitute
118
- def self.command(*arguments, substitute: false)
119
- if true == substitute
179
+ # @param [Boolean, String] sudo
180
+ def self.command(*arguments, sudo: SUDO)
181
+ if true == sudo
120
182
  arguments.unshift('sudo')
121
183
  end
122
184
 
123
- if substitute.is_a?(String) && false == "#{substitute}".empty?
124
- arguments.unshift('su-exec', substitute)
185
+ if sudo.is_a?(String) && false == "#{sudo}".empty?
186
+ arguments.unshift('su-exec', sudo)
125
187
  end
126
188
 
127
189
  return Paser.arguments(*arguments).join(' ')
128
190
  end
129
191
 
130
192
  # @param [Array] arguments
131
- # @param [Boolean, String] substitute
132
- # @param [Boolean] exception
133
- # @param [Numeric] duration
193
+ # @param [Boolean, String] sudo
194
+ # @param [Boolean] throw
195
+ # @param [Numeric] wait
134
196
  # @param [Boolean] strip
135
- # @param [Boolean] verbose
136
- def self.capture(*arguments, substitute: false, exception: false, duration: 0, strip: true, verbose: false)
197
+ # @param [Boolean] echo
198
+ def self.capture(*arguments, sudo: SUDO, throw: false, wait: 0, strip: true, echo: false)
137
199
  begin
138
- command = self.command(*arguments, substitute: substitute)
200
+ command = self.command(*arguments, sudo: sudo)
139
201
 
140
- if verbose
141
- Color.echo("+ #{command}", Color::GREEN)
202
+ if echo
203
+ Color.echo(": #{command}", Color::YELLOW)
142
204
  end
143
205
 
144
206
  data = `#{command}`
145
207
  result = strip ? "#{data}".strip : data
146
- self.wait(duration)
208
+ self.wait(wait)
147
209
  return result
148
210
  rescue
149
- raise unless exception
211
+ raise unless throw
150
212
  return ''
151
213
  end
152
214
  end
153
215
 
154
216
  # @param [Array] arguments
155
- # @param [Boolean, String] substitute
156
- # @param [Boolean] exception
157
- # @param [Numeric] duration
158
- def self.run(*arguments, substitute: false, exception: true, duration: 0)
159
- command = self.command(*arguments, substitute: substitute)
160
- Color.echo("+ #{command}", Color::GREEN)
161
- result = system(command, exception: exception)
162
- self.wait(duration)
217
+ # @param [Boolean, String] sudo
218
+ # @param [Boolean] throw
219
+ # @param [Numeric] wait
220
+ # @param [Boolean] echo
221
+ def self.run(*arguments, sudo: SUDO, throw: true, wait: 0, echo: true)
222
+ command = self.command(*arguments, sudo: sudo)
223
+
224
+ if echo
225
+ Color.echo("+ #{command}", Color::GREEN)
226
+ end
227
+
228
+ result = system(command, exception: throw)
229
+ self.wait(wait)
163
230
  return result
164
231
  end
165
232
 
166
233
  # @param [Array] arguments
167
- # @param [Boolean, String] substitute
168
- def self.execute(*arguments, substitute: false)
169
- command = self.command(*arguments, substitute: substitute)
170
- Color.echo("= #{command}", Color::CYAN)
234
+ # @param [Boolean, String] sudo
235
+ def self.execute(*arguments, sudo: SUDO, echo: true)
236
+ command = self.command(*arguments, sudo: sudo)
237
+
238
+ if echo
239
+ Color.echo("= #{command}", Color::CYAN)
240
+ end
241
+
171
242
  exec(command)
172
243
  end
173
244
 
@@ -283,8 +354,8 @@ module DockerCore
283
354
 
284
355
  # @param [Object] io
285
356
  # @param [String] path
286
- # @param [Boolean] verbose
287
- def self.unpack_archive(io, path, verbose: false)
357
+ # @param [Boolean] echo
358
+ def self.unpack_archive(io, path, echo: false)
288
359
  Gem::Package::TarReader.new(io) do
289
360
 
290
361
  # @type [Gem::Package::TarReader] reader
@@ -296,7 +367,7 @@ module DockerCore
296
367
  mode = header.mode
297
368
  file = File.join(path, entry.full_name)
298
369
 
299
- if verbose
370
+ if echo
300
371
  Color.echo(": #{file}", Color::GREEN)
301
372
  end
302
373
 
@@ -317,19 +388,19 @@ module DockerCore
317
388
 
318
389
  # @param [String] file
319
390
  # @param [String] path
320
- # @param [Boolean] verbose
321
- def self.inflate_file(file, path, verbose: false)
391
+ # @param [Boolean] echo
392
+ def self.inflate_file(file, path, echo: false)
322
393
  Zlib::GzipReader.open(file) do
323
394
 
324
395
  # @type [Zlib::GzipReader] reader
325
396
  |reader|
326
- self.unpack_archive(reader, path, verbose: verbose)
397
+ self.unpack_archive(reader, path, echo: echo)
327
398
  end
328
399
  end
329
400
 
330
401
  # @param [String] path
331
- # @param [Boolean] verbose
332
- def self.tape_archive(path, verbose: false)
402
+ # @param [Boolean] echo
403
+ def self.tape_archive(path, echo: false)
333
404
  io = StringIO.new('')
334
405
  offset = path.size + 1
335
406
 
@@ -341,7 +412,7 @@ module DockerCore
341
412
  mode = File.stat(name).mode
342
413
  file = name.slice(offset ..)
343
414
 
344
- if verbose
415
+ if echo
345
416
  Color.echo(": #{file}", Color::GREEN)
346
417
  end
347
418
 
@@ -365,13 +436,13 @@ module DockerCore
365
436
 
366
437
  # @param [String] file
367
438
  # @param [String] path
368
- # @param [Boolean] verbose
369
- def self.deflate_file(file, path, verbose: false)
439
+ # @param [Boolean] echo
440
+ def self.deflate_file(file, path, echo: false)
370
441
  Zlib::GzipWriter.open(file, Zlib::BEST_COMPRESSION) do
371
442
 
372
443
  # @type [Zlib::GzipWriter] writer
373
444
  |writer|
374
- writer.write(self.tape_archive(path, verbose: verbose))
445
+ writer.write(self.tape_archive(path, echo: echo))
375
446
  end
376
447
  end
377
448
 
@@ -380,8 +451,9 @@ module DockerCore
380
451
  def self.update_user(uid: 500, gid: 500)
381
452
  uid = ENV.fetch('DOCKER_CORE_UID', uid)
382
453
  gid = ENV.fetch('DOCKER_CORE_GID', gid)
383
- Process.run('deluser', USER, exception: false)
384
- Process.run('delgroup', GROUP, exception: false)
454
+
455
+ Process.run('deluser', USER, throw: false)
456
+ Process.run('delgroup', GROUP, throw: false)
385
457
  Process.run('addgroup', { system: true, gid: gid }, GROUP)
386
458
  Process.run('adduser', { system: true, 'disabled-password': true, 'no-create-home': true, ingroup: GROUP, gecos: USER, shell: '/bin/bash', uid: uid }, USER)
387
459
  end
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.23
4
+ version: 0.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - agrozyme
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-28 00:00:00.000000000 Z
11
+ date: 2021-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fileutils