docker_core 0.0.17 → 0.0.18

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 +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