percheron 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e1af8757e13bcb1ab2e0d94dbc5d6d1149ff5ec
4
- data.tar.gz: 8287c265fd6d1799e0a3ee955fde3594c29b288e
3
+ metadata.gz: e4d585a406d9b1b5a23ef33013450d00755ceaf3
4
+ data.tar.gz: a63795fa29c8c6fd05de2f6bf9587c57bf0f98bb
5
5
  SHA512:
6
- metadata.gz: d379100dca1cd6c41aa97cda26a298b0fe9a3d96af7cd4a85548fff6d9def4c6cc0b34730abd461216598083f97057b4360de2484f7e8179d6209a2a87beb37c
7
- data.tar.gz: 554da2c090b33f6035e208deb94602a70b817353d7213c00a0727b2382e815be7c352d0a24189b42e871848ce4311263d38de358f832b7122e1314219edd1c8e
6
+ metadata.gz: 8b8b0e9fc1748c246c710ae0b52bf48f31665e0e9d4ae2445e4f9f5982e2461514dc194079f06c91da36c00671f05f4a02dd751a075b425bc4d4537bccf6f49e
7
+ data.tar.gz: 0e09f330cd3a70896296e65d9610c3381a82c246a67e0c672187a92f00a8ddda7364abc70b7bc6efbc048fb6e4ab8a6b1f74be93858d48ba11067e3fde7b8b27
data/README.md CHANGED
@@ -3,8 +3,11 @@
3
3
  [![Gem Version](https://badge.fury.io/rb/percheron.svg)](http://badge.fury.io/rb/percheron)
4
4
  [![Travis CI](https://travis-ci.org/ashmckenzie/percheron.svg)](https://travis-ci.org/ashmckenzie/percheron)
5
5
  [![Code Climate GPA](https://codeclimate.com/github/ashmckenzie/percheron/badges/gpa.svg)](https://codeclimate.com/github/ashmckenzie/percheron)
6
+ [![Test Coverage](https://codeclimate.com/github/ashmckenzie/percheron/badges/coverage.svg)](https://codeclimate.com/github/ashmckenzie/percheron)
6
7
  [![Dependency Status](https://gemnasium.com/ashmckenzie/percheron.svg)](https://gemnasium.com/ashmckenzie/percheron)
7
8
 
9
+ ![Perheron](https://raw.githubusercontent.com/ashmckenzie/percheron/cache-store/assets/percheron.png)
10
+
8
11
  Organise your Docker containers with muscle and intelligence.
9
12
 
10
13
  ## Installation
Binary file
data/bin/percheron CHANGED
@@ -7,6 +7,7 @@ require 'logger'
7
7
  require 'percheron'
8
8
  require 'percheron/cli'
9
9
 
10
+ $metastore = Metastore::Cabinet.new(File.join(ENV['HOME'], '.percheron', 'metastore.yaml'))
10
11
  $logger = Logger.new(STDOUT)
11
12
 
12
13
  logger_level = Logger::WARN
@@ -5,7 +5,7 @@ module Percheron
5
5
  extend Forwardable
6
6
  extend ConfigDelegator
7
7
 
8
- def_delegators :container_config, :name, :dockerfile_md5
8
+ def_delegators :container_config, :name
9
9
 
10
10
  def_config_item_with_default :container_config, false, :auto_recreate
11
11
  def_config_item_with_default :container_config, [], :env, :ports, :volumes, :dependant_container_names
@@ -80,6 +80,7 @@ module Percheron
80
80
  unless exists?
81
81
  $logger.debug "Container '#{name}' does not exist, creating"
82
82
  Container::Actions::Create.new(self).execute!
83
+ set_dockerfile_md5!
83
84
  else
84
85
  $logger.debug "Not creating '#{name}' container as it already exists"
85
86
  end
@@ -90,6 +91,7 @@ module Percheron
90
91
  if recreate?(bypass_auto_recreate: bypass_auto_recreate)
91
92
  $logger.warn "Container '#{name}' exists and will be recreated"
92
93
  Container::Actions::Recreate.new(self).execute!
94
+ set_dockerfile_md5!
93
95
  else
94
96
  if recreatable?
95
97
  $logger.warn "Container '#{name}' MD5's do not match, consider recreating"
@@ -122,7 +124,7 @@ module Percheron
122
124
  Validators::Container.new(self).valid?
123
125
  end
124
126
 
125
- protected
127
+ private
126
128
 
127
129
  attr_reader :config, :stack, :container_name
128
130
 
@@ -142,6 +144,19 @@ module Percheron
142
144
  dockerfile_md5 || current_dockerfile_md5
143
145
  end
144
146
 
147
+ def metastore_key
148
+ @metastore_key ||= 'stacks.%s.containers.%s' % [ stack.name, name ]
149
+ end
150
+
151
+ def dockerfile_md5
152
+ $metastore.get("#{metastore_key}.dockerfile_md5")
153
+ end
154
+
155
+ def set_dockerfile_md5!
156
+ $logger.debug "Setting MD5 for '#{name}' container to #{current_dockerfile_md5}"
157
+ $metastore.set("#{metastore_key}.dockerfile_md5", current_dockerfile_md5)
158
+ end
159
+
145
160
  def current_dockerfile_md5
146
161
  Digest::MD5.file(dockerfile).hexdigest
147
162
  end
@@ -31,10 +31,7 @@ module Percheron
31
31
  end
32
32
 
33
33
  def base_docker_options
34
- {
35
- connect_timeout: config.docker.timeout,
36
- scheme: 'https'
37
- }
34
+ { connect_timeout: config.docker.timeout }
38
35
  end
39
36
 
40
37
  def extra_docker_opts
@@ -1,3 +1,3 @@
1
1
  module Percheron
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/percheron.rb CHANGED
@@ -4,6 +4,7 @@ require 'pathname'
4
4
  require 'docker'
5
5
  require 'naught'
6
6
  require 'semantic'
7
+ require 'metastore'
7
8
 
8
9
  require 'percheron/core_extensions'
9
10
  require 'percheron/version'
data/percheron.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_runtime_dependency 'terminal-table', '~> 1.4'
25
25
  spec.add_runtime_dependency 'naught', '~> 1.0'
26
26
  spec.add_runtime_dependency 'semantic', '~> 1.4'
27
+ spec.add_runtime_dependency 'metastore', '~> 0.3'
27
28
 
28
29
  spec.add_development_dependency 'bundler', '~> 1.7'
29
30
  spec.add_development_dependency 'rake', '~> 10.0'
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.3.1
4
+ version: 0.3.2
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-03-03 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clamp
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.4'
97
+ - !ruby/object:Gem::Dependency
98
+ name: metastore
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.3'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '0.3'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: bundler
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +194,7 @@ files:
180
194
  - LICENSE.txt
181
195
  - README.md
182
196
  - Rakefile
197
+ - assets/percheron.png
183
198
  - bin/percheron
184
199
  - lib/percheron.rb
185
200
  - lib/percheron/cli.rb