dockit 1.8.0 → 2.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/Dockerfile +2 -2
- data/VERSION +1 -1
- data/lib/dockit.rb +26 -17
- data/lib/dockit/cli.rb +29 -20
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c028879bc5c35215d74edc86f94c914e6995ae74
|
4
|
+
data.tar.gz: a3ff836fa1b0459a361e201fee8e0c9a3be75029
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2b680e81a2939e67248af511bf995e76b52c81bb3dcc6021e1e0ead4861f12d0ed2809c23e76b6c6621e4712ff3986d04da829cac76725349070bdb49db8022
|
7
|
+
data.tar.gz: f4cfdfa504680b59061780d8610d6fa5779ebb1e34a938f0162e3e9244ca528561d03a2a724c010a023548bb03d2f705a3306bd96399a2826d5efb41d43bb0f3
|
data/Dockerfile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
FROM cybercode/alpine-ruby:2.
|
2
|
-
ENV DOCKER_VERSION=1.
|
1
|
+
FROM cybercode/alpine-ruby:2.3
|
2
|
+
ENV DOCKER_VERSION=1.11.1 BIN=/usr/local/bin/docker
|
3
3
|
|
4
4
|
RUN apk --update add curl ruby-json && curl -sSL -o $BIN \
|
5
5
|
https://get.docker.com/builds/Linux/x86_64/docker-$DOCKER_VERSION \
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.1
|
data/lib/dockit.rb
CHANGED
@@ -16,28 +16,37 @@ module Dockit
|
|
16
16
|
def debug(msg)
|
17
17
|
$stderr.puts "DEBUG: " + msg.join(' ')
|
18
18
|
end
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
$stderr.puts "Response parse error:", e.message, chunk
|
19
|
+
class << self
|
20
|
+
# new docker app (xhyve) returns multi-line (multiple JSON hash) chunks.
|
21
|
+
# So, split them up before trying to parse them.
|
22
|
+
def print_chunk(chunk)
|
23
|
+
chunk.each_line { |c| print_one_chunk(c) }
|
25
24
|
end
|
26
25
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
[chunk['status'], id, progress, progress ? "\r" : "\n"].join(' ')
|
26
|
+
private
|
27
|
+
def print_one_chunk(chunk)
|
28
|
+
begin
|
29
|
+
chunk = JSON.parse(chunk)
|
30
|
+
rescue Docker::Error::UnexpectedResponseError => e
|
31
|
+
$stderr.puts "Unexpected response:", e.message, chunk
|
32
|
+
rescue JSON::ParserError
|
33
|
+
$stderr.puts "Parse Error: #{chunk}"
|
36
34
|
end
|
37
|
-
|
35
|
+
|
36
|
+
progress = chunk['progress']
|
37
|
+
id = progress ? '' : chunk['id']
|
38
|
+
$stdout.puts(
|
39
|
+
if chunk['errorDetail']
|
40
|
+
'ERROR: ' + chunk['errorDetail']['message']
|
41
|
+
elsif chunk['stream']
|
42
|
+
chunk['stream']
|
43
|
+
else
|
44
|
+
[chunk['status'], id, progress, progress ? "\r" : "\n"].join(' ')
|
45
|
+
end
|
46
|
+
)
|
47
|
+
end
|
38
48
|
end
|
39
49
|
end
|
40
|
-
|
41
50
|
# This class encapsulates the environment used in the Dockit cli.
|
42
51
|
# The class has three main attributes:
|
43
52
|
#
|
data/lib/dockit/cli.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'io/console'
|
2
3
|
require 'thor'
|
3
4
|
require 'dockit'
|
4
5
|
|
6
|
+
GIT_BRANCH=`git symbolic-ref --short HEAD 2>/dev/null`.chomp
|
7
|
+
|
5
8
|
class SubCommand < Thor
|
6
9
|
no_commands do
|
7
10
|
# invoke command against the Dockit.yaml for the given service.
|
@@ -124,17 +127,21 @@ class Default < Thor
|
|
124
127
|
option :images , type: :boolean, default: true , desc: "remove danging images"
|
125
128
|
option :containers, type: :boolean, default: true , desc: "remove exited containers"
|
126
129
|
option :volumes , type: :boolean, default: true , desc: 'remove dangling volumes'
|
127
|
-
option
|
128
|
-
|
129
|
-
option 'except-
|
130
|
-
|
130
|
+
option 'force-containers', type: :boolean, default: false,
|
131
|
+
desc: 'stop and remove all containers', aliases: %[f]
|
132
|
+
option 'except-containers', type: :array,
|
133
|
+
desc: "container names to leave if 'force-containers' true", aliases: %[C]
|
134
|
+
option 'force-images', type: :boolean, default: false, desc: 'remove ALL volumes'
|
135
|
+
option 'except-images', type: :array,
|
136
|
+
desc: "image tags (name:version) to leave if 'force-images' true", aliases: %[I]
|
131
137
|
def cleanup
|
132
|
-
force = options[:force]
|
133
138
|
Dockit::Container.clean(
|
134
|
-
force: force, except: options['except-containers']
|
139
|
+
force: options['force-containers'], except: options['except-containers']
|
140
|
+
) if options[:containers]
|
135
141
|
|
136
142
|
Dockit::Image.clean(
|
137
|
-
force: force, except: options['except-images']
|
143
|
+
force: options['force-images'], except: options['except-images']
|
144
|
+
) if options[:images]
|
138
145
|
|
139
146
|
if options[:volumes] && Docker.version['ApiVersion'].to_f >= 1.21
|
140
147
|
Dockit::Volume.clean
|
@@ -149,6 +156,7 @@ class Default < Thor
|
|
149
156
|
say s.config.instance_variable_get('@config').to_yaml
|
150
157
|
end
|
151
158
|
end
|
159
|
+
|
152
160
|
desc 'push REGISTRY [SERVICE]', 'push image for SERVICE to REGSITRY'
|
153
161
|
option :force, type: :boolean, desc: 'overwrite current lastest version'
|
154
162
|
option :tag, desc: 'repos tag (defaults to "latest")', aliases: ['t']
|
@@ -175,32 +183,29 @@ class Default < Thor
|
|
175
183
|
end
|
176
184
|
|
177
185
|
desc 'git-build', 'build from git (gem) repository'
|
178
|
-
option :branch, desc: '<tree-ish> git reference', default:
|
179
|
-
option :gem, type: :boolean, desc: "update Gemfiles export"
|
186
|
+
option :branch, desc: '<tree-ish> git reference', default: GIT_BRANCH
|
180
187
|
option :package, type: :boolean, desc: "update package config export"
|
181
188
|
long_desc <<-LONGDESC
|
182
189
|
Dockit.yaml keys used:
|
183
190
|
\x5 repos_path: optional treeish path
|
184
191
|
\x5 repos: repository location
|
185
|
-
\x5 package: optional
|
192
|
+
\x5 package: optional
|
186
193
|
|
187
194
|
`dockit git-build` will export {branch}:repos_path from the
|
188
195
|
repository location specified in the :repos key to 'repos.tar.gz'
|
189
196
|
|
190
|
-
The '--package' option will export the files in the :package key
|
191
|
-
|
192
|
-
|
197
|
+
The '--package' option will export the files in the :package key in
|
198
|
+
Dockit.yaml separately to 'package.tar.gz'. This is docker best practice
|
199
|
+
for building rails apps.
|
193
200
|
|
194
|
-
*
|
195
|
-
|
196
|
-
The deprecated '--gem' option is will export the packages to
|
197
|
-
'gemfile.tar.gz'.
|
201
|
+
*Breaking change (2.0)* ~branch~ now defaults to the *current* local
|
202
|
+
branch, not ~master~.
|
198
203
|
LONGDESC
|
199
204
|
|
200
205
|
def git_build(service=nil)
|
201
206
|
exec(service) do |s|
|
202
207
|
unless repos = s.config.get(:repos)
|
203
|
-
say "'repos' not defined in config file. Exiting", :red
|
208
|
+
say "'repos' not defined in config file. Exiting…", :red
|
204
209
|
exit 1
|
205
210
|
end
|
206
211
|
path = s.config.get(:repos_path)
|
@@ -212,8 +217,12 @@ class Default < Thor
|
|
212
217
|
say "Exporting in #{Dir.pwd}", :green
|
213
218
|
say "<- #{repos} #{treeish}", :green
|
214
219
|
|
215
|
-
if options.
|
216
|
-
packages = s.config.get(:package)
|
220
|
+
if options.package
|
221
|
+
unless packages = s.config.get(:package)
|
222
|
+
say "'packages' not defined in config file. Exiting…", :red
|
223
|
+
exit 1
|
224
|
+
end
|
225
|
+
|
217
226
|
archive = options.gem ? 'gemfile.tar.gz' : 'package.tar.gz'
|
218
227
|
say "-> #{archive}", :green
|
219
228
|
export(repos, treeish, archive, packages)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dockit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rick Frankel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -192,7 +192,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
192
192
|
version: '0'
|
193
193
|
requirements: []
|
194
194
|
rubyforge_project:
|
195
|
-
rubygems_version: 2.
|
195
|
+
rubygems_version: 2.6.4
|
196
196
|
signing_key:
|
197
197
|
specification_version: 4
|
198
198
|
summary: A configuration manager and builder for docker projects.
|
@@ -207,3 +207,4 @@ test_files:
|
|
207
207
|
- spec/dockit/simple.yaml
|
208
208
|
- spec/dockit_spec.rb
|
209
209
|
- spec/spec_helper.rb
|
210
|
+
has_rdoc:
|