percheron 0.3.1 → 0.3.2

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 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