docker_core 0.0.3 → 0.0.8

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 +131 -5
  3. metadata +33 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23920bae7b894844cc279a3ef67e29f30ccbdb63abd2c7c357b9d4489afc478f
4
- data.tar.gz: 756fb6475c66e40428cbb1d197a3881dd94d90d6b00bc8f0453022ea334fbaaa
3
+ metadata.gz: 417a44472031d3acce9a599d7cd6873deced890dcdbc3ea5993d935d8e74f874
4
+ data.tar.gz: 2914b35b4ee999f8fd8e677a55125ebfa07f835da3dc957c8204cb9f09c7810f
5
5
  SHA512:
6
- metadata.gz: 38bb74b325f9824f2b86abbb51c7ddfc11a53b20111393c928f357456630a84d5081e77623de58a10c75c745711adbf7eba1dcdf7d855ccb7540bcc0b2db2178
7
- data.tar.gz: e134335d05e69127883a4d4f4f9e3f79464e91cf262a222dca1bb385c9e5872aa77dc92d232dc3e8f5260ceb3e1e16f8d130ce53dfdccdaeaea9f1719415e18b
6
+ metadata.gz: 796f1c189d39e0d5e9bcf042325203fc89082522a4d1a73b13355ea4dbd7ae9166a1c7a78c59d41ca657a2548c02fb5057ef0c4fd055a5594cc0ce0d86aacbec
7
+ data.tar.gz: ef6b8b6ea7072330800830db4d84e1ade2b49ac76f0ec2c46d5354156fe738872826d1a963b9f32a9d40ddcd27728c9ba2fe6a04da8648c52def7be867e59716
data/lib/docker_core.rb CHANGED
@@ -1,7 +1,12 @@
1
- require 'fileutils'
1
+ require('fileutils')
2
+ require('net/http')
3
+ require('json')
4
+ require('zlib')
5
+ require('rubygems/package')
2
6
 
3
7
  module DockerCore
4
8
  COLOR_CODE = { error: 31, info: 32, warn: 33 }
9
+ ARCH_SUFFIX = { x86: '386', x86_64: 'amd64', armhf: 'armv6', aarch64: 'arm64' }
5
10
 
6
11
  # @param [String] text
7
12
  # @param [Integer] code
@@ -23,9 +28,9 @@ module DockerCore
23
28
  # @param [Array] argumets
24
29
  def self.execute(title, run, *argumets)
25
30
  code = self::COLOR_CODE[:warn]
26
- self.echo(">> #{title}", code)
31
+ self.echo("> #{title}", code)
27
32
  run.call(*argumets)
28
- self.echo("<< #{title}", code)
33
+ self.echo("< #{title}", code)
29
34
  end
30
35
 
31
36
  # @param [String] command
@@ -56,11 +61,132 @@ module DockerCore
56
61
  self.run("adduser --system --disabled-password --no-create-home --ingroup=core --gecos=core --shell=/bin/bash --uid=#{uid} core")
57
62
  end
58
63
 
59
- # @param [Array] arguments
64
+ # @param [Array<String>] arguments
65
+ def self.chown(*arguments)
66
+ arguments.each do |list|
67
+ FileUtils.chown_R('core', 'core', list)
68
+ end
69
+ return
70
+ end
71
+
72
+ # @param [Array<String>] arguments
60
73
  def self.mkdir(*arguments)
61
74
  arguments.each do |list|
62
75
  FileUtils.mkdir_p(list)
63
- FileUtils.chown_R('core', 'core', list)
64
76
  end
77
+ self.chown(*arguments)
65
78
  end
79
+
80
+ # @param [String] value
81
+ def self.to_boolean(value)
82
+ return %w[true yes on].include?(value.strip.downcase)
83
+ end
84
+
85
+ # @param [String] stdout
86
+ # @param [String] stderr
87
+ def self.link_log(stdout = '', stderr = '')
88
+ if '' != stdout
89
+ File.symlink('/dev/stdout', stdout)
90
+ end
91
+
92
+ if '' != stderr
93
+ File.symlink('/dev/stderr', stderr)
94
+ end
95
+ return
96
+ end
97
+
98
+ # @param [Array<String>] arguments
99
+ def self.clear_path(*arguments)
100
+ arguments.each do |list|
101
+ FileUtils.rm_rf(list)
102
+ end
103
+
104
+ self.mkdir(*arguments)
105
+ end
106
+
107
+ def self.arch_suffix
108
+ arch = "#{`apk --print-arch`}".strip
109
+ return ARCH_SUFFIX.fetch(arch.to_sym, arch)
110
+ end
111
+
112
+ # @param [String] repository
113
+ def self.github_latest_version(repository)
114
+ body = Net::HTTP.get(URI("https://api.github.com/repos/#{repository}/releases/latest"))
115
+ return JSON.parse(body)['tag_name']
116
+ end
117
+
118
+ # @param [String] uri
119
+ # @param [Integer] max_redirect
120
+ def self.uri_resolve(uri, max_redirect = 10)
121
+ response = Net::HTTP.get_response(URI.parse(uri))
122
+
123
+ if false == response.is_a?(Net::HTTPRedirection)
124
+ return uri
125
+ end
126
+
127
+ max_redirect = max_redirect - 1
128
+
129
+ if 0 == max_redirect
130
+ raise('maximum redirect reached')
131
+ else return self.uri_resolve(response['location'], max_redirect)
132
+ end
133
+ end
134
+
135
+ # @param [String] uri
136
+ # @param [String] file
137
+ def self.download_file(uri, file)
138
+ uri = self.uri_resolve(uri)
139
+ content = Net::HTTP.get(URI(uri))
140
+ return File.binwrite(file, content)
141
+ end
142
+
143
+ # @param [String] file
144
+ # @param [String] path
145
+ def self.ungzip(file, path)
146
+ longlink = '././@LongLink'
147
+
148
+ # @type [Gem::Package::TarReader] tar
149
+ Gem::Package::TarReader.new(Zlib::GzipReader.open(file)) do |tar|
150
+ target = nil
151
+ tar.rewind
152
+
153
+ tar.each do |entry|
154
+ name = entry.full_name
155
+
156
+ if name == longlink
157
+ target = File.join(path, "#{entry.read}".strip)
158
+ next
159
+ end
160
+
161
+ target ||= File.join(path, name)
162
+
163
+ # @type [Gem::Package::TarHeader] header
164
+ header = entry.header
165
+ typeflag = header.typeflag
166
+ end_slash = name.end_with?('/')
167
+
168
+ if entry.directory? || ('' == typeflag && end_slash)
169
+ if File.file?(target)
170
+ File.delete(target)
171
+ end
172
+
173
+ FileUtils.mkdir_p(target, header.mode)
174
+ elsif entry.file? || ('' == typeflag && !end_slash)
175
+ if File.directory?(target)
176
+ FileUtils.rm_rf(target)
177
+ end
178
+
179
+ FileUtils.mkdir_p(File.dirname(target))
180
+ File.binwrite(target, entry.read)
181
+ FileUtils.chmod(header.mode, target)
182
+ elsif '2' == typeflag #Symlink!
183
+ File.symlink(header.linkname, target)
184
+ else raise("Unkown tar entry: #{name} type: #{typeflag}.")
185
+ end
186
+
187
+ target = nil
188
+ end
189
+ end
190
+ end
191
+
66
192
  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.3
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - agrozyme
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-01 00:00:00.000000000 Z
11
+ date: 2021-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fileutils
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: zlib
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  description:
28
56
  email:
29
57
  executables: []
@@ -31,7 +59,7 @@ extensions: []
31
59
  extra_rdoc_files: []
32
60
  files:
33
61
  - lib/docker_core.rb
34
- homepage:
62
+ homepage: https://gitlab.com/agrozyme-package/ruby/docker_core
35
63
  licenses: []
36
64
  metadata: {}
37
65
  post_install_message:
@@ -42,14 +70,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
42
70
  requirements:
43
71
  - - ">="
44
72
  - !ruby/object:Gem::Version
45
- version: '0'
73
+ version: 2.5.0
46
74
  required_rubygems_version: !ruby/object:Gem::Requirement
47
75
  requirements:
48
76
  - - ">="
49
77
  - !ruby/object:Gem::Version
50
78
  version: '0'
51
79
  requirements: []
52
- rubygems_version: 3.2.15
80
+ rubygems_version: 3.1.6
53
81
  signing_key:
54
82
  specification_version: 4
55
83
  summary: some functions for docker build / run