percheron 0.6.4 → 0.7.0
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/.cane +4 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +31 -0
- data/.travis.yml +4 -1
- data/Guardfile +3 -3
- data/README.md +19 -3
- data/Rakefile +24 -1
- data/bin/percheron +2 -20
- data/lib/percheron/actions/base.rb +0 -39
- data/lib/percheron/actions/build.rb +9 -7
- data/lib/percheron/actions/create.rb +64 -38
- data/lib/percheron/actions/exec.rb +40 -8
- data/lib/percheron/actions/exec_local.rb +4 -4
- data/lib/percheron/actions/logs.rb +44 -0
- data/lib/percheron/actions/purge.rb +15 -4
- data/lib/percheron/actions/recreate.rb +15 -65
- data/lib/percheron/actions/restart.rb +2 -1
- data/lib/percheron/actions/shell.rb +27 -0
- data/lib/percheron/actions/start.rb +10 -7
- data/lib/percheron/actions.rb +2 -1
- data/lib/percheron/commands/abstract.rb +20 -8
- data/lib/percheron/commands/build.rb +13 -0
- data/lib/percheron/commands/console.rb +53 -0
- data/lib/percheron/commands/create.rb +3 -3
- data/lib/percheron/commands/list.rb +7 -3
- data/lib/percheron/commands/logs.rb +16 -0
- data/lib/percheron/commands/main.rb +5 -2
- data/lib/percheron/commands/purge.rb +2 -2
- data/lib/percheron/commands/recreate.rb +3 -11
- data/lib/percheron/commands/restart.rb +2 -2
- data/lib/percheron/commands/shell.rb +16 -0
- data/lib/percheron/commands/start.rb +2 -2
- data/lib/percheron/commands/stop.rb +2 -2
- data/lib/percheron/commands.rb +3 -0
- data/lib/percheron/config.rb +64 -3
- data/lib/percheron/config_delegator.rb +0 -1
- data/lib/percheron/container.rb +95 -38
- data/lib/percheron/core_extensions.rb +1 -4
- data/lib/percheron/docker_connection.rb +5 -1
- data/lib/percheron/formatters/stack/table.rb +24 -12
- data/lib/percheron/logger.rb +21 -0
- data/lib/percheron/metastore.rb +1 -0
- data/lib/percheron/null_stack.rb +5 -0
- data/lib/percheron/oh_dear.rb +15 -7
- data/lib/percheron/stack.rb +77 -72
- data/lib/percheron/validators/config.rb +1 -1
- data/lib/percheron/validators/container.rb +31 -11
- data/lib/percheron/validators/stack.rb +3 -5
- data/lib/percheron/version.rb +1 -1
- data/lib/percheron.rb +2 -0
- data/percheron.gemspec +4 -1
- metadata +54 -4
- data/assets/percheron.png +0 -0
- data/lib/percheron/actions/rename.rb +0 -65
@@ -10,7 +10,7 @@ module Percheron
|
|
10
10
|
message = rules.return { |rule| send(rule) }
|
11
11
|
|
12
12
|
if message
|
13
|
-
|
13
|
+
fail Errors::StackInvalid, message
|
14
14
|
else
|
15
15
|
true
|
16
16
|
end
|
@@ -21,13 +21,11 @@ module Percheron
|
|
21
21
|
attr_reader :stack
|
22
22
|
|
23
23
|
def rules
|
24
|
-
[
|
25
|
-
:validate_name
|
26
|
-
]
|
24
|
+
[ :validate_name ]
|
27
25
|
end
|
28
26
|
|
29
27
|
def validate_name
|
30
|
-
'
|
28
|
+
'Stack name is invalid' if stack.name.nil? || !stack.name.to_s.match(/[\w\d]{3,}/)
|
31
29
|
end
|
32
30
|
|
33
31
|
end
|
data/lib/percheron/version.rb
CHANGED
data/lib/percheron.rb
CHANGED
@@ -5,6 +5,7 @@ require 'docker'
|
|
5
5
|
require 'naught'
|
6
6
|
require 'semantic'
|
7
7
|
require 'metastore'
|
8
|
+
require 'liquid'
|
8
9
|
|
9
10
|
require 'percheron/oh_dear'
|
10
11
|
require 'percheron/core_extensions'
|
@@ -15,6 +16,7 @@ require 'percheron/config_delegator'
|
|
15
16
|
require 'percheron/formatters'
|
16
17
|
require 'percheron/validators'
|
17
18
|
require 'percheron/stack'
|
19
|
+
require 'percheron/null_stack'
|
18
20
|
require 'percheron/container'
|
19
21
|
require 'percheron/null_container'
|
20
22
|
require 'percheron/actions'
|
data/percheron.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = [ 'Ash McKenzie' ]
|
10
10
|
spec.email = [ 'ash@the-rebellion.net' ]
|
11
11
|
|
12
|
-
spec.summary =
|
12
|
+
spec.summary = 'Organise your Docker containers with muscle and intelligence'
|
13
13
|
spec.homepage = 'https://github.com/ashmckenzie/percheron'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
@@ -26,6 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_runtime_dependency 'semantic', '~> 1.4'
|
27
27
|
spec.add_runtime_dependency 'metastore', '~> 0.3'
|
28
28
|
spec.add_runtime_dependency 'highline', '~> 1.7.1'
|
29
|
+
spec.add_runtime_dependency 'liquid', '~> 3.0'
|
29
30
|
|
30
31
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
31
32
|
spec.add_development_dependency 'rake', '~> 10.0'
|
@@ -33,4 +34,6 @@ Gem::Specification.new do |spec|
|
|
33
34
|
spec.add_development_dependency 'guard-rspec', '~> 4.5'
|
34
35
|
spec.add_development_dependency 'simplecov', '~> 0.9'
|
35
36
|
spec.add_development_dependency 'timecop', '~> 0.7'
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.30.0'
|
38
|
+
spec.add_development_dependency 'cane', '~> 2.6.0'
|
36
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: percheron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ash McKenzie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: clamp
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 1.7.1
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: liquid
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: bundler
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -206,6 +220,34 @@ dependencies:
|
|
206
220
|
- - "~>"
|
207
221
|
- !ruby/object:Gem::Version
|
208
222
|
version: '0.7'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: rubocop
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: 0.30.0
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: 0.30.0
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: cane
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - "~>"
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: 2.6.0
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - "~>"
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: 2.6.0
|
209
251
|
description:
|
210
252
|
email:
|
211
253
|
- ash@the-rebellion.net
|
@@ -214,8 +256,10 @@ executables:
|
|
214
256
|
extensions: []
|
215
257
|
extra_rdoc_files: []
|
216
258
|
files:
|
259
|
+
- ".cane"
|
217
260
|
- ".gitignore"
|
218
261
|
- ".rspec"
|
262
|
+
- ".rubocop.yml"
|
219
263
|
- ".travis.yml"
|
220
264
|
- CODE_OF_CONDUCT.md
|
221
265
|
- Gemfile
|
@@ -223,7 +267,6 @@ files:
|
|
223
267
|
- LICENSE.txt
|
224
268
|
- README.md
|
225
269
|
- Rakefile
|
226
|
-
- assets/percheron.png
|
227
270
|
- bin/percheron
|
228
271
|
- lib/percheron.rb
|
229
272
|
- lib/percheron/actions.rb
|
@@ -232,21 +275,25 @@ files:
|
|
232
275
|
- lib/percheron/actions/create.rb
|
233
276
|
- lib/percheron/actions/exec.rb
|
234
277
|
- lib/percheron/actions/exec_local.rb
|
278
|
+
- lib/percheron/actions/logs.rb
|
235
279
|
- lib/percheron/actions/purge.rb
|
236
280
|
- lib/percheron/actions/recreate.rb
|
237
|
-
- lib/percheron/actions/rename.rb
|
238
281
|
- lib/percheron/actions/restart.rb
|
282
|
+
- lib/percheron/actions/shell.rb
|
239
283
|
- lib/percheron/actions/start.rb
|
240
284
|
- lib/percheron/actions/stop.rb
|
241
285
|
- lib/percheron/commands.rb
|
242
286
|
- lib/percheron/commands/abstract.rb
|
287
|
+
- lib/percheron/commands/build.rb
|
243
288
|
- lib/percheron/commands/console.rb
|
244
289
|
- lib/percheron/commands/create.rb
|
245
290
|
- lib/percheron/commands/list.rb
|
291
|
+
- lib/percheron/commands/logs.rb
|
246
292
|
- lib/percheron/commands/main.rb
|
247
293
|
- lib/percheron/commands/purge.rb
|
248
294
|
- lib/percheron/commands/recreate.rb
|
249
295
|
- lib/percheron/commands/restart.rb
|
296
|
+
- lib/percheron/commands/shell.rb
|
250
297
|
- lib/percheron/commands/start.rb
|
251
298
|
- lib/percheron/commands/stop.rb
|
252
299
|
- lib/percheron/config.rb
|
@@ -258,7 +305,10 @@ files:
|
|
258
305
|
- lib/percheron/formatters.rb
|
259
306
|
- lib/percheron/formatters/stack.rb
|
260
307
|
- lib/percheron/formatters/stack/table.rb
|
308
|
+
- lib/percheron/logger.rb
|
309
|
+
- lib/percheron/metastore.rb
|
261
310
|
- lib/percheron/null_container.rb
|
311
|
+
- lib/percheron/null_stack.rb
|
262
312
|
- lib/percheron/oh_dear.rb
|
263
313
|
- lib/percheron/stack.rb
|
264
314
|
- lib/percheron/validators.rb
|
data/assets/percheron.png
DELETED
Binary file
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module Percheron
|
2
|
-
module Actions
|
3
|
-
class Rename
|
4
|
-
|
5
|
-
include Base
|
6
|
-
|
7
|
-
def initialize(container, temporary_name, new_name)
|
8
|
-
@container = container
|
9
|
-
@temporary_name = temporary_name
|
10
|
-
@new_name = new_name
|
11
|
-
end
|
12
|
-
|
13
|
-
def execute!
|
14
|
-
results = []
|
15
|
-
results << rename!
|
16
|
-
results.compact.empty? ? nil : container
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
attr_reader :container, :temporary_name, :new_name
|
22
|
-
|
23
|
-
def rename_current_new_name
|
24
|
-
@rename_current_new_name ||= '%s_%s' % [ container.name, now_timestamp ]
|
25
|
-
end
|
26
|
-
|
27
|
-
def old_container
|
28
|
-
Docker::Container.get(rename_current_new_name)
|
29
|
-
end
|
30
|
-
|
31
|
-
def temporary_container
|
32
|
-
Docker::Container.get(temporary_name)
|
33
|
-
end
|
34
|
-
|
35
|
-
def rename!
|
36
|
-
container_running = container.running?
|
37
|
-
stop_containers!([ container ]) if container_running
|
38
|
-
rename_containers!
|
39
|
-
start_containers!([ container ]) if container_running
|
40
|
-
remove_old!
|
41
|
-
end
|
42
|
-
|
43
|
-
def rename_containers!
|
44
|
-
rename_container_current_to_old! if container.exists?
|
45
|
-
rename_container_temporary_to_new!
|
46
|
-
end
|
47
|
-
|
48
|
-
def rename_container_current_to_old!
|
49
|
-
$logger.info "Renaming '#{container.name}' container to '#{rename_current_new_name}'"
|
50
|
-
container.docker_container.rename(rename_current_new_name)
|
51
|
-
end
|
52
|
-
|
53
|
-
def rename_container_temporary_to_new!
|
54
|
-
$logger.info "Renaming '#{temporary_name}' container to '#{new_name}'"
|
55
|
-
temporary_container.rename(new_name)
|
56
|
-
end
|
57
|
-
|
58
|
-
def remove_old!
|
59
|
-
$logger.info "Removing '#{rename_current_new_name}' container"
|
60
|
-
old_container.remove
|
61
|
-
end
|
62
|
-
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|