gendockerfile 0.0.0 → 0.0.1
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.
- checksums.yaml +4 -4
- data/Rakefile +8 -0
- data/lib/gendockerfile.rb +93 -2
- data/test/test_gendockerfile.rb +9 -0
- metadata +21 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc86b51346f5984da20a9209325ca0c6e25b1b4f
|
4
|
+
data.tar.gz: 9f055aa61d8d58de719fdc53c3e1aa8dd264aec6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fc581f0da87466aca313ec08d6642fc677a94fbf426c154c8833784ac1ac876295f48560a2af92197aa08666074cae7472a1453eb22683fc6839b9041eda209
|
7
|
+
data.tar.gz: da2260a5f1c2c50be9b11c72496b817209087bf7bf1d4399ffcf54b3e548ca37453c8ef45b8ffd7b36be29e70d934cdb5c0ea1b0beab251b947de435c861c736
|
data/Rakefile
ADDED
data/lib/gendockerfile.rb
CHANGED
@@ -1,7 +1,98 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'logger'
|
3
|
+
require 'ate'
|
4
|
+
|
5
|
+
$LOGFILE = "gendockerfile.log"
|
6
|
+
$LOG = Logger.new($LOGFILE, 'daily')
|
7
|
+
$NEWLINE = "\n"
|
8
|
+
|
1
9
|
class GenDockerfile
|
10
|
+
@configHash
|
11
|
+
|
12
|
+
def self.configHash
|
13
|
+
@configHash
|
14
|
+
end
|
15
|
+
|
2
16
|
def self.init()
|
3
|
-
|
17
|
+
$LOG.debug("GenDockerfile.init called")
|
18
|
+
$LOG.debug("GenDockerfile.init reading env var GEN_DOCKERFILE_CONFIG")
|
19
|
+
|
20
|
+
config = ENV['GEN_DOCKERFILE_CONFIG']
|
21
|
+
if config.nil?
|
22
|
+
config = "null"
|
23
|
+
end
|
24
|
+
|
25
|
+
$LOG.debug("GenDockerfile.init config: " + config)
|
26
|
+
|
27
|
+
if !File.exist?(config)
|
28
|
+
errMsg = "env var GEN_DOCKERFILE_CONFIG not set to a valid file: " + config
|
29
|
+
puts errMsg
|
30
|
+
$LOG.error(errMsg)
|
31
|
+
else
|
32
|
+
$LOG.info(config + " exists")
|
33
|
+
file = File.read(config)
|
34
|
+
begin
|
35
|
+
@configHash = JSON.parse(file)
|
36
|
+
$LOG.debug(@configHash)
|
37
|
+
rescue JSON::ParserError => e
|
38
|
+
errMsg = "unable to parse " + config
|
39
|
+
puts errMsg
|
40
|
+
puts "see logfile for details: " + $LOGFILE
|
41
|
+
$LOG.error(errMsg)
|
42
|
+
$LOG.error(e)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
$LOG.debug("GenDockerfile.init done")
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.write
|
49
|
+
$LOG.debug("GenDockerfile.write called")
|
4
50
|
|
5
|
-
|
51
|
+
template = Ate.parse(
|
52
|
+
"lib/Dockerfile.ate",
|
53
|
+
FROM: @configHash ['from'],
|
54
|
+
MAINTAINER: @configHash ['maintainer'],
|
55
|
+
EXPOSE: @configHash ['expose'],
|
56
|
+
CMD: @configHash ['cmd'],
|
57
|
+
RUN: arrayPartsToString("RUN", @configHash ['run']),
|
58
|
+
ENV: envPairsAsString("ENV", @configHash ['env'])
|
59
|
+
)
|
60
|
+
content = template.render
|
61
|
+
puts content
|
62
|
+
|
63
|
+
now = Time.now.strftime("%Y%m%d-%H%M%S")
|
64
|
+
outFilename = "Dockerfile." + now
|
65
|
+
file = File.open(outFilename, "w")
|
66
|
+
file.write(content)
|
67
|
+
|
68
|
+
puts "generated dockerfile written to " + outFilename
|
69
|
+
|
70
|
+
$LOG.debug("generated dockerfile written to " + outFilename)
|
71
|
+
$LOG.debug("GenDockerfile.write done")
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.envPairsAsString(command, envArray)
|
75
|
+
envBlock = ""
|
76
|
+
(0..envArray.length - 1).each do |index|
|
77
|
+
envHash = envArray[index]
|
78
|
+
envHash.each do |key, value|
|
79
|
+
envBlock += command + " " + key + " " + value + $NEWLINE
|
80
|
+
end
|
81
|
+
end
|
82
|
+
return envBlock
|
6
83
|
end
|
84
|
+
|
85
|
+
def self.arrayPartsToString(command, array)
|
86
|
+
parts = ""
|
87
|
+
(0..array.length - 1).each do |index|
|
88
|
+
parts += command + " " + array[index] + $NEWLINE
|
89
|
+
end
|
90
|
+
|
91
|
+
return parts
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
if __FILE__ == $0
|
96
|
+
GenDockerfile.init
|
97
|
+
GenDockerfile.write
|
7
98
|
end
|
metadata
CHANGED
@@ -1,22 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gendockerfile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eamonn O Nuallain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
12
|
-
dependencies:
|
11
|
+
date: 2017-07-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ate
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
description: Generate dockerfile using ruby
|
14
28
|
email: eamonn.o.nuallain@gail.com
|
15
29
|
executables: []
|
16
30
|
extensions: []
|
17
31
|
extra_rdoc_files: []
|
18
32
|
files:
|
33
|
+
- Rakefile
|
19
34
|
- lib/gendockerfile.rb
|
35
|
+
- test/test_gendockerfile.rb
|
20
36
|
homepage: http://rubygems.org/gems/gendockerfile
|
21
37
|
licenses:
|
22
38
|
- Apache License 2
|
@@ -41,4 +57,5 @@ rubygems_version: 2.4.5.1
|
|
41
57
|
signing_key:
|
42
58
|
specification_version: 4
|
43
59
|
summary: Generate dockerfile using ruby
|
44
|
-
test_files:
|
60
|
+
test_files:
|
61
|
+
- test/test_gendockerfile.rb
|