docker_core 0.0.17 → 0.0.18

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 +74 -68
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85249b5bf70ef8b313ad2ff28898889db66e92c5b96af40a024e61131453ec4c
4
- data.tar.gz: e4dafbe9bfdcc3fd40fcc3d93b76b8557b599ba07201fdfddff0bcb08ff9c65f
3
+ metadata.gz: 2f80afb4258260ec1da58951eca584f9321f0f21b13f0137865ca42c5852944f
4
+ data.tar.gz: 8d1c6a6d11b3365c23fb67f618e63d20087afe72bc11b09c9c005cf666daac4b
5
5
  SHA512:
6
- metadata.gz: '0489e8827a51d214072b11f7bc4d32bfb8624484670da293839727de7586c408863728cf84a1e5f83df9be8b1d14df844debf129570f587a377496dbb5aadee6'
7
- data.tar.gz: e3d7a871d1ac19786b3cc06bd8525d33000e76b70208d61e44eaaa794bc7c4e9749ff507ec6ba93a09a636961d81c8cb539555714bb56b6053fd1cdb2351a518
6
+ metadata.gz: d79c07a8abea54822b90858b3a27e6894dc2d51dd509f37769e879a60c33ee66806fb663480aef403524e93243c4ca02fbfdb3cef23672f1acd132cc41cdf128
7
+ data.tar.gz: 2e497a18fc9afcefcadc97fc0b89fc364e7dc6c70d78100d426ce05e18db49fe99122f4075c68376eb4737862bfd6577ceafd2f51114cef4659e01449ab7734c
data/lib/docker_core.rb CHANGED
@@ -7,67 +7,60 @@ require('thor')
7
7
  require('zlib')
8
8
 
9
9
  module DockerCore
10
- module Image
11
- end
10
+ module Shell
11
+ # include(Thor::Shell)
12
12
 
13
- module Command
14
- end
13
+ USER = 'core'
14
+ GROUP = 'core'
15
15
 
16
- module Paser
17
- # @param [String] value
18
- def self.boolean(value)
19
- return %w[true yes on].include?("#{value}".strip.downcase)
16
+ class Color < Thor::Shell::Color
20
17
  end
21
18
 
22
- # @param [String] text
23
- def self.kebab(text)
24
- return "#{text}".gsub(/_/, '-')
25
- end
19
+ module Paser
20
+ # @param [String] value
21
+ def self.boolean(value)
22
+ return %w[true yes on].include?("#{value}".strip.downcase)
23
+ end
24
+
25
+ # @param [String] text
26
+ def self.kebab(text)
27
+ return "#{text}".gsub(/_/, '-')
28
+ end
26
29
 
27
- # @param [Hash] hash
28
- def self.options(hash = {})
29
- items = []
30
+ # @param [Hash] hash
31
+ def self.options(hash = {})
32
+ items = []
30
33
 
31
- hash.each do |key, value|
32
- name = '--' + self.kebab(key)
33
- item = (true == value) ? name : %Q(#{name}="#{value}")
34
- items << item
34
+ hash.each do |key, value|
35
+ name = '--' + self.kebab(key)
36
+ item = (true == value) ? name : %Q(#{name}="#{value}")
37
+ items << item
38
+ end
39
+
40
+ return items
35
41
  end
36
42
 
37
- return items
38
- end
43
+ def self.make(*arguments)
44
+ items = []
39
45
 
40
- def self.make(*arguments)
41
- items = []
46
+ arguments.each do |item|
47
+ if item.is_a?(Array)
48
+ items.concat(item.map { |value| "#{value}" })
49
+ next
50
+ end
42
51
 
43
- arguments.each do |item|
44
- if item.is_a?(Array)
45
- items.concat(item.map { |value| "#{value}" })
46
- next
47
- end
52
+ if item.is_a?(Hash)
53
+ items.concat(self.options(item))
54
+ next
55
+ end
48
56
 
49
- if item.is_a?(Hash)
50
- items.concat(self.options(item))
57
+ items << "#{item}"
51
58
  next
52
59
  end
53
60
 
54
- items << "#{item}"
55
- next
61
+ return items
56
62
  end
57
-
58
- return items
59
- end
60
-
61
- def self.command(*arguments)
62
- return self.make(*arguments).join(' ')
63
63
  end
64
- end
65
-
66
- module Shell
67
- include(Thor::Shell)
68
-
69
- USER = 'core'
70
- GROUP = 'core'
71
64
 
72
65
  # @param [String] text
73
66
  # @param [Array<String>] colors
@@ -87,19 +80,31 @@ module DockerCore
87
80
  return puts("#{color}#{text}#{Color::CLEAR}")
88
81
  end
89
82
 
83
+ def self.command(*arguments, substitute: false)
84
+ if substitute
85
+ arguments.unshift('su-exec', USER)
86
+ end
87
+
88
+ return Paser.make(*arguments).join(' ')
89
+ end
90
+
90
91
  # @param [Boolean] strip
91
- def self.capture(*arguments, strip: true)
92
- command = Paser.command(*arguments)
92
+ def self.capture(*arguments, strip: true, verbose: false, substitute: false)
93
+ command = self.command(*arguments, substitute: substitute)
94
+
95
+ if verbose
96
+ self.echo("+ #{command}", Color::GREEN)
97
+ end
98
+
93
99
  data = `#{command}`
94
100
  return strip ? "#{data}".strip : data
95
101
  end
96
102
 
97
103
  # @param [Boolean] force
98
- def self.execute(*arguments, force: false)
104
+ def self.run(*arguments, force: false, substitute: false)
99
105
  begin
100
- command = Paser.command(*arguments)
101
- self.echo("+ #{command}", Color::GREEN)
102
- print(`#{command}`)
106
+ data = self.capture(*arguments, strip: false, verbose: true, substitute: substitute)
107
+ print(data)
103
108
  rescue
104
109
  raise unless force
105
110
  end
@@ -107,9 +112,10 @@ module DockerCore
107
112
 
108
113
  # @param [Boolean] force
109
114
  # @param [String] user
110
- def self.sudo(*arguments, force: false, user: USER)
111
- arguments.unshift('su-exec', user)
112
- self.execute(*arguments, force: force)
115
+ def self.execute(*arguments, substitute: false)
116
+ command = self.command(*arguments, substitute: substitute)
117
+ self.echo("= #{command}", Color::CYAN)
118
+ exec(command)
113
119
  end
114
120
 
115
121
  # @param [String] title
@@ -124,7 +130,7 @@ module DockerCore
124
130
 
125
131
  # @param [Array<String>] arguments
126
132
  # @return [Array<String>]
127
- def self.find_files(*arguments)
133
+ def self.find_paths(*arguments)
128
134
  return Dir.glob(arguments.flatten, File::FNM_DOTMATCH).map do |item|
129
135
  next File.path(item)
130
136
  end.filter do |item|
@@ -136,14 +142,14 @@ module DockerCore
136
142
  # @param [String] user
137
143
  # @param [String] group
138
144
  def self.change_owner(*arguments, user: USER, group: GROUP)
139
- self.find_files(*arguments).each do |path|
145
+ self.find_paths(*arguments).each do |path|
140
146
  FileUtils.chown_R(user, group, path, force: true)
141
147
  end
142
148
  end
143
149
 
144
150
  # @param [Array<String>] arguments
145
151
  def self.change_mode(mode, *arguments)
146
- self.find_files(*arguments).each do |path|
152
+ self.find_paths(*arguments).each do |path|
147
153
  FileUtils.chmod_R(mode, path, force: true)
148
154
  end
149
155
  end
@@ -172,17 +178,17 @@ module DockerCore
172
178
  end
173
179
 
174
180
  # @param [Array<String>] arguments
175
- def self.remove_folders(*arguments)
176
- self.find_files(*arguments).each do |path|
181
+ def self.remove_paths(*arguments)
182
+ self.find_paths(*arguments).each do |path|
177
183
  FileUtils.rm_rf(path)
178
184
  end
179
185
  end
180
186
 
181
187
  # @param [String, Array<String>] source
182
188
  # @param [String] target
183
- def self.move_files(source, target)
189
+ def self.move_paths(source, target)
184
190
  files = [source].flatten
185
- FileUtils.mv(self.find_files(*files), target)
191
+ FileUtils.mv(self.find_paths(*files), target)
186
192
  end
187
193
 
188
194
  # @param [String] uri
@@ -266,7 +272,7 @@ module DockerCore
266
272
 
267
273
  # @type [Gem::Package::TarWriter] writer
268
274
  |writer|
269
- self.find_files(File.join(path, '**/*')).each do |name|
275
+ self.find_paths(File.join(path, '**/*')).each do |name|
270
276
  mode = File.stat(name).mode
271
277
  file = name.slice(offset ..)
272
278
 
@@ -307,10 +313,10 @@ module DockerCore
307
313
  # @param [Integer] uid
308
314
  # @param [Integer] gid
309
315
  def self.update_user(uid: 500, gid: 500)
310
- self.execute('deluser', USER, force: true)
311
- self.execute('delgroup', GROUP, force: true)
312
- self.execute('addgroup', { system: true, gid: ENV.fetch('DOCKER_CORE_GID', gid) }, GROUP)
313
- self.execute('adduser', { system: true, 'disabled-password': true, 'no-create-home': true, ingroup: GROUP, gecos: USER, shell: '/bin/bash', uid: ENV.fetch('DOCKER_CORE_UID', uid) }, USER)
316
+ self.run('deluser', USER, force: true)
317
+ self.run('delgroup', GROUP, force: true)
318
+ self.run('addgroup', { system: true, gid: ENV.fetch('DOCKER_CORE_GID', gid) }, GROUP)
319
+ self.run('adduser', { system: true, 'disabled-password': true, 'no-create-home': true, ingroup: GROUP, gecos: USER, shell: '/bin/bash', uid: ENV.fetch('DOCKER_CORE_UID', uid) }, USER)
314
320
  end
315
321
 
316
322
  # @param [String] stdout
@@ -327,12 +333,12 @@ module DockerCore
327
333
 
328
334
  # @param [Array<String>] arguments
329
335
  def self.clear_folders(*arguments, mode: nil)
330
- self.remove_folders(*arguments)
336
+ self.remove_paths(*arguments)
331
337
  self.make_folders(*arguments, mode: mode)
332
338
  end
333
339
 
334
340
  def self.architecture
335
- hash = { x86: '386', x86_64: 'amd64', armhf: 'armv6', aarch64: 'arm64' }
341
+ hash = { x86: '386', x86_64: 'amd64', armhf: 'armv6', armv7l: 'armv7', aarch64: 'arm64' }
336
342
  machine = "#{Etc.uname[:machine]}"
337
343
  return hash.fetch(machine.to_sym, machine)
338
344
  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.17
4
+ version: 0.0.18
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-24 00:00:00.000000000 Z
11
+ date: 2021-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fileutils