nutkins 0.1.5 → 0.1.6
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/bin/nutkins +1 -6
- data/lib/nutkins/version.rb +1 -1
- data/lib/nutkins.rb +32 -24
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e39c7d9fb6cf2c1c75ea934110db18766e507ab8
|
4
|
+
data.tar.gz: b8e2dbfa8a16cd68b564db04bd024114cf4c042a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ec3ae892c0dd327696cee6e7254a1cfb3e50bf2a4e3348b012184fc4a1ff61adba402abe451e9b21a15c0bf2f54d49e85cef11ff9706673ce56fcc115ce0fde8
|
7
|
+
data.tar.gz: c1db55842f25e02cb6163218e6e74d881ab8364f0bbd13763f876cde5c533c9115f7f83fd578ec8a08e400e5e9cac483fa199fef47f11c95af7d616be99e87e1
|
data/bin/nutkins
CHANGED
@@ -58,12 +58,7 @@ module Nutkins::Command
|
|
58
58
|
|
59
59
|
case command
|
60
60
|
when 'build'
|
61
|
-
names
|
62
|
-
if names.empty?
|
63
|
-
nutkins.build
|
64
|
-
else
|
65
|
-
config.names.each &nutkins.method(:build)
|
66
|
-
end
|
61
|
+
config.names.each &nutkins.method(:build)
|
67
62
|
when 'create'
|
68
63
|
config.names.each do |name|
|
69
64
|
nutkins.create name, preserve: config.preserve
|
data/lib/nutkins/version.rb
CHANGED
data/lib/nutkins.rb
CHANGED
@@ -28,15 +28,11 @@ module Nutkins
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def build img_name
|
31
|
+
def build img_name
|
32
32
|
cfg = get_image_config img_name
|
33
33
|
img_dir = get_project_dir img_name
|
34
34
|
raise "directory `#{img_dir}' does not exist" unless Dir.exists? img_dir
|
35
|
-
|
36
|
-
if img_name == '.'
|
37
|
-
img_name = cfg["image"]
|
38
|
-
raise "nutkin.yaml requires image entry for `build .'" unless img_name
|
39
|
-
end
|
35
|
+
tag = get_tag cfg
|
40
36
|
|
41
37
|
build_cfg = cfg["build"]
|
42
38
|
if build_cfg
|
@@ -45,7 +41,6 @@ module Nutkins
|
|
45
41
|
Download.download_resources img_dir, resources if resources
|
46
42
|
end
|
47
43
|
|
48
|
-
tag = get_tag img_name
|
49
44
|
prev_image_id = Docker.image_id_for_tag tag
|
50
45
|
|
51
46
|
if run_docker "build", "-t", tag, img_dir
|
@@ -80,7 +75,7 @@ module Nutkins
|
|
80
75
|
end
|
81
76
|
end
|
82
77
|
|
83
|
-
tag = get_tag
|
78
|
+
tag = get_tag cfg
|
84
79
|
prev_container_id = Docker.container_id_for_tag tag unless preserve
|
85
80
|
puts "creating new docker image"
|
86
81
|
unless run_docker "create", "-it", *flags, tag, *docker_args
|
@@ -100,15 +95,20 @@ module Nutkins
|
|
100
95
|
|
101
96
|
def run img_name, reuse: false, shell: false
|
102
97
|
cfg = get_image_config img_name
|
103
|
-
tag = get_tag
|
98
|
+
tag = get_tag cfg
|
104
99
|
create_args = []
|
105
100
|
if shell
|
106
101
|
raise '--shell and --reuse arguments are incompatible' if reuse
|
107
102
|
|
108
103
|
# TODO: test for smell-baron
|
109
104
|
create_args = JSON.parse(`docker inspect #{tag}`)[0]["Config"]["Cmd"]
|
105
|
+
|
106
|
+
kill_everything = create_args[0] == '-a'
|
107
|
+
create_args.shift if kill_everything
|
108
|
+
|
110
109
|
create_args.unshift '/bin/bash', '---'
|
111
110
|
create_args.unshift '-f' unless create_args[0] == '-f'
|
111
|
+
create_args.unshift '-a' if kill_everything
|
112
112
|
# TODO: provide version that doesn't require smell-baron
|
113
113
|
end
|
114
114
|
|
@@ -123,7 +123,12 @@ module Nutkins
|
|
123
123
|
end
|
124
124
|
|
125
125
|
def delete img_name
|
126
|
-
|
126
|
+
cfg = get_image_config img_name
|
127
|
+
tag = get_tag cfg
|
128
|
+
container_id = Docker.container_id_for_tag tag
|
129
|
+
raise "no container to delete" if container_id.nil?
|
130
|
+
puts "deleting container #{container_id}"
|
131
|
+
run_docker "rm", container_id
|
127
132
|
end
|
128
133
|
|
129
134
|
def delete_all
|
@@ -147,9 +152,9 @@ module Nutkins
|
|
147
152
|
end
|
148
153
|
|
149
154
|
def extract_secrets img_names
|
150
|
-
|
151
|
-
|
152
|
-
|
155
|
+
if img_names.empty?
|
156
|
+
img_names = get_all_img_names(img_names).push '.'
|
157
|
+
end
|
153
158
|
|
154
159
|
img_names.each do |img_name|
|
155
160
|
get_secrets(img_name).each do |secret|
|
@@ -175,7 +180,7 @@ module Nutkins
|
|
175
180
|
def get_image_config path
|
176
181
|
img_cfg_path = File.join get_project_dir(path), IMG_CONFIG_FILE_NAME
|
177
182
|
img_cfg = File.exists?(img_cfg_path) ? YAML.load_file(img_cfg_path) : {}
|
178
|
-
|
183
|
+
img_cfg["image"] ||= path if path != '.'
|
179
184
|
img_cfg
|
180
185
|
end
|
181
186
|
|
@@ -183,18 +188,21 @@ module Nutkins
|
|
183
188
|
path == '.' ? @project_root : File.join(@project_root, path)
|
184
189
|
end
|
185
190
|
|
186
|
-
def get_tag
|
187
|
-
|
188
|
-
|
191
|
+
def get_tag img_cfg
|
192
|
+
unless img_cfg.has_key? "image"
|
193
|
+
raise "nutkins.yaml should contain `image' entry for this command"
|
194
|
+
end
|
195
|
+
|
196
|
+
repository = img_cfg['repository'] || @config.repository
|
197
|
+
if repository.nil?
|
198
|
+
raise "nutkins.yaml or nutkin.yaml should contain `repository' entry for this command"
|
199
|
+
end
|
200
|
+
repository + '/' + img_cfg['image']
|
189
201
|
end
|
190
202
|
|
191
|
-
def
|
192
|
-
|
193
|
-
|
194
|
-
File.basename File.dirname(path)
|
195
|
-
end
|
196
|
-
else
|
197
|
-
img_names
|
203
|
+
def get_all_img_names img_names
|
204
|
+
Dir.glob("#{@project_root}/*/Dockerfile").map do |path|
|
205
|
+
File.basename File.dirname(path)
|
198
206
|
end
|
199
207
|
end
|
200
208
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nutkins
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Pike
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|