docker_core 0.0.21 → 0.0.25

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 +78 -39
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 275fb150858e7ab66ce56d30261f078e4298b38ef3c4e341c460c8e9fa13ec9b
4
- data.tar.gz: dd21636922cc634f306a4573fb829ba329b51b8ac42a89c03bb94e651e8c1619
3
+ metadata.gz: a1aa25b8f032a45928140b7f29a149f6dfd9e5b658775027a68c0af0149c3a56
4
+ data.tar.gz: 0e7384b6cfacba90eaea5a6fcc1c95fad176a350b644030a82aecb01ca41710d
5
5
  SHA512:
6
- metadata.gz: cd9098dc3a100fffa7ba45cd9ea6b3fb78310769205c1d600fa8476307f6568a07e0894276975727be8ac05ca66c3f132db4d7d621139ef2db43f24d35b2f555
7
- data.tar.gz: f2fb926a87426831461558903c764f256b553609d713e8bf9dfb2951f92d4c25b3bf4bc7945dade12eb3470bcee85475fd4585796784b9e3075a92a39b554ea0
6
+ metadata.gz: 1152e77399f32f7339b421a8f7a589d2c14545a40ca6670459a56a190e6e73749d01d055649dbc12c2c091aa67690101524ea9e890428a76f8a0217a35adc59b
7
+ data.tar.gz: 31bb09aa3c9c01d053764efd20264fc21453e6bb0a0f3c8d26ea71e7804f23f7b90bf190339a7dc91cb382a45cf151eca488bd2f37b595f080b2625e50b4eb66
data/lib/docker_core.rb CHANGED
@@ -7,6 +7,7 @@ require('thor')
7
7
  require('zlib')
8
8
 
9
9
  module DockerCore
10
+ SUDO = false
10
11
  USER = 'core'
11
12
  GROUP = 'core'
12
13
 
@@ -56,15 +57,20 @@ module DockerCore
56
57
 
57
58
  if hash.is_a?(Hash)
58
59
  hash.each do |key, value|
59
- name = '--' + self.kebab(key)
60
+ short = 1 == key.length
61
+ prefix = short ? '-' : '--'
62
+ separator = short ? ' ' : '='
63
+ name = prefix + self.kebab(key)
60
64
 
61
65
  if true == value
62
66
  items << name
63
67
  next
64
68
  end
65
69
 
66
- value = "#{value}".gsub(/\\/, '\&\&').gsub('"', '\"')
67
- items << %(#{name}="#{value}")
70
+ [value].flatten.each do |item|
71
+ item = "#{item}".gsub(/\\/, '\&\&').gsub('"', '\"')
72
+ items << %(#{name}#{separator}"#{item}")
73
+ end
68
74
  next
69
75
  end
70
76
  end
@@ -96,50 +102,82 @@ module DockerCore
96
102
  end
97
103
 
98
104
  module Process
105
+ # @param [Numeric] second
106
+ def self.wait(second = 0)
107
+ if second.is_a?(Numeric)
108
+ if 0 > second
109
+ return sleep
110
+ end
111
+ if 0 < second
112
+ return sleep(second)
113
+ end
114
+ end
115
+ end
116
+
99
117
  # @param [Array] arguments
100
- # @param [Boolean] substitute
101
- def self.command(*arguments, substitute: false)
102
- if substitute
103
- arguments.unshift('su-exec', USER)
118
+ # @param [Boolean, String] sudo
119
+ def self.command(*arguments, sudo: SUDO)
120
+ if true == sudo
121
+ arguments.unshift('sudo')
122
+ end
123
+
124
+ if sudo.is_a?(String) && false == "#{sudo}".empty?
125
+ arguments.unshift('su-exec', sudo)
104
126
  end
105
127
 
106
128
  return Paser.arguments(*arguments).join(' ')
107
129
  end
108
130
 
109
131
  # @param [Array] arguments
110
- # @param [Boolean] substitute
111
- # @param [Boolean] force
132
+ # @param [Boolean, String] sudo
133
+ # @param [Boolean] throw
134
+ # @param [Numeric] wait
112
135
  # @param [Boolean] strip
113
- # @param [Boolean] verbose
114
- def self.capture(*arguments, substitute: false, force: false, strip: true, verbose: false)
136
+ # @param [Boolean] echo
137
+ def self.capture(*arguments, sudo: SUDO, throw: false, wait: 0, strip: true, echo: false)
115
138
  begin
116
- command = self.command(*arguments, substitute: substitute)
139
+ command = self.command(*arguments, sudo: sudo)
117
140
 
118
- if verbose
119
- Color.echo("+ #{command}", Color::GREEN)
141
+ if echo
142
+ Color.echo(": #{command}", Color::YELLOW)
120
143
  end
121
144
 
122
145
  data = `#{command}`
123
- return strip ? "#{data}".strip : data
146
+ result = strip ? "#{data}".strip : data
147
+ self.wait(wait)
148
+ return result
124
149
  rescue
125
- raise unless force
150
+ raise unless throw
126
151
  return ''
127
152
  end
128
153
  end
129
154
 
130
155
  # @param [Array] arguments
131
- # @param [Boolean] substitute
132
- # @param [Boolean] force
133
- def self.run(*arguments, substitute: false, force: false)
134
- data = self.capture(*arguments, substitute: substitute, force: force, strip: false, verbose: true)
135
- print(data)
156
+ # @param [Boolean, String] sudo
157
+ # @param [Boolean] throw
158
+ # @param [Numeric] wait
159
+ # @param [Boolean] echo
160
+ def self.run(*arguments, sudo: SUDO, throw: true, wait: 0, echo: true)
161
+ command = self.command(*arguments, sudo: sudo)
162
+
163
+ if echo
164
+ Color.echo("+ #{command}", Color::GREEN)
165
+ end
166
+
167
+ result = system(command, exception: throw)
168
+ self.wait(wait)
169
+ return result
136
170
  end
137
171
 
138
172
  # @param [Array] arguments
139
- # @param [Boolean] substitute
140
- def self.execute(*arguments, substitute: false)
141
- command = self.command(*arguments, substitute: substitute)
142
- Color.echo("= #{command}", Color::CYAN)
173
+ # @param [Boolean, String] sudo
174
+ def self.execute(*arguments, sudo: SUDO, echo: true)
175
+ command = self.command(*arguments, sudo: sudo)
176
+
177
+ if echo
178
+ Color.echo("= #{command}", Color::CYAN)
179
+ end
180
+
143
181
  exec(command)
144
182
  end
145
183
 
@@ -255,8 +293,8 @@ module DockerCore
255
293
 
256
294
  # @param [Object] io
257
295
  # @param [String] path
258
- # @param [Boolean] verbose
259
- def self.unpack_archive(io, path, verbose: false)
296
+ # @param [Boolean] echo
297
+ def self.unpack_archive(io, path, echo: false)
260
298
  Gem::Package::TarReader.new(io) do
261
299
 
262
300
  # @type [Gem::Package::TarReader] reader
@@ -268,7 +306,7 @@ module DockerCore
268
306
  mode = header.mode
269
307
  file = File.join(path, entry.full_name)
270
308
 
271
- if verbose
309
+ if echo
272
310
  Color.echo(": #{file}", Color::GREEN)
273
311
  end
274
312
 
@@ -289,19 +327,19 @@ module DockerCore
289
327
 
290
328
  # @param [String] file
291
329
  # @param [String] path
292
- # @param [Boolean] verbose
293
- def self.inflate_file(file, path, verbose: false)
330
+ # @param [Boolean] echo
331
+ def self.inflate_file(file, path, echo: false)
294
332
  Zlib::GzipReader.open(file) do
295
333
 
296
334
  # @type [Zlib::GzipReader] reader
297
335
  |reader|
298
- self.unpack_archive(reader, path, verbose: verbose)
336
+ self.unpack_archive(reader, path, echo: echo)
299
337
  end
300
338
  end
301
339
 
302
340
  # @param [String] path
303
- # @param [Boolean] verbose
304
- def self.tape_archive(path, verbose: false)
341
+ # @param [Boolean] echo
342
+ def self.tape_archive(path, echo: false)
305
343
  io = StringIO.new('')
306
344
  offset = path.size + 1
307
345
 
@@ -313,7 +351,7 @@ module DockerCore
313
351
  mode = File.stat(name).mode
314
352
  file = name.slice(offset ..)
315
353
 
316
- if verbose
354
+ if echo
317
355
  Color.echo(": #{file}", Color::GREEN)
318
356
  end
319
357
 
@@ -337,13 +375,13 @@ module DockerCore
337
375
 
338
376
  # @param [String] file
339
377
  # @param [String] path
340
- # @param [Boolean] verbose
341
- def self.deflate_file(file, path, verbose: false)
378
+ # @param [Boolean] echo
379
+ def self.deflate_file(file, path, echo: false)
342
380
  Zlib::GzipWriter.open(file, Zlib::BEST_COMPRESSION) do
343
381
 
344
382
  # @type [Zlib::GzipWriter] writer
345
383
  |writer|
346
- writer.write(self.tape_archive(path, verbose: verbose))
384
+ writer.write(self.tape_archive(path, echo: echo))
347
385
  end
348
386
  end
349
387
 
@@ -352,8 +390,9 @@ module DockerCore
352
390
  def self.update_user(uid: 500, gid: 500)
353
391
  uid = ENV.fetch('DOCKER_CORE_UID', uid)
354
392
  gid = ENV.fetch('DOCKER_CORE_GID', gid)
355
- Process.run('deluser', USER, force: true)
356
- Process.run('delgroup', GROUP, force: true)
393
+
394
+ Process.run('deluser', USER, throw: false)
395
+ Process.run('delgroup', GROUP, throw: false)
357
396
  Process.run('addgroup', { system: true, gid: gid }, GROUP)
358
397
  Process.run('adduser', { system: true, 'disabled-password': true, 'no-create-home': true, ingroup: GROUP, gecos: USER, shell: '/bin/bash', uid: uid }, USER)
359
398
  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.21
4
+ version: 0.0.25
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-27 00:00:00.000000000 Z
11
+ date: 2021-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fileutils