r10k 1.1.0 → 1.1.1rc1
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.
- data/lib/r10k/deployment.rb +1 -2
- data/lib/r10k/deployment/basedir.rb +38 -0
- data/lib/r10k/deployment/source.rb +15 -0
- data/lib/r10k/task/deployment.rb +5 -12
- data/lib/r10k/version.rb +1 -1
- metadata +43 -7
data/lib/r10k/deployment.rb
CHANGED
@@ -60,9 +60,8 @@ class Deployment
|
|
60
60
|
|
61
61
|
def load_sources
|
62
62
|
sources = @config.setting(:sources)
|
63
|
-
prefix = sources.length > 1
|
64
63
|
@_sources = sources.map do |(name, hash)|
|
65
|
-
R10K::Deployment::Source.vivify(name, hash
|
64
|
+
R10K::Deployment::Source.vivify(name, hash)
|
66
65
|
end
|
67
66
|
end
|
68
67
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'r10k/git/cache'
|
2
|
+
require 'r10k/deployment/environment'
|
3
|
+
require 'r10k/util/purgeable'
|
4
|
+
|
5
|
+
module R10K
|
6
|
+
class Deployment
|
7
|
+
class Basedir
|
8
|
+
# Represents a directory containing environments
|
9
|
+
|
10
|
+
def initialize(path,deployment)
|
11
|
+
@path = path
|
12
|
+
@deployment = deployment
|
13
|
+
end
|
14
|
+
|
15
|
+
include R10K::Util::Purgeable
|
16
|
+
|
17
|
+
# Return the path of the basedir
|
18
|
+
# @note This implements a required method for the Purgeable mixin
|
19
|
+
# @return [String]
|
20
|
+
def managed_directory
|
21
|
+
@path
|
22
|
+
end
|
23
|
+
|
24
|
+
# List all environments that should exist in this basedir
|
25
|
+
# @note This implements a required method for the Purgeable mixin
|
26
|
+
# @return [Array<String>]
|
27
|
+
def desired_contents
|
28
|
+
@keepers = []
|
29
|
+
@deployment.sources.each do |source|
|
30
|
+
next unless source.managed_directory == @path
|
31
|
+
@keepers += source.desired_contents
|
32
|
+
end
|
33
|
+
@keepers
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'r10k/git/cache'
|
2
2
|
require 'r10k/deployment/environment'
|
3
|
+
require 'r10k/deployment/basedir'
|
3
4
|
require 'r10k/util/purgeable'
|
4
5
|
|
5
6
|
module R10K
|
@@ -27,6 +28,20 @@ class Source
|
|
27
28
|
# @return [Array<R10K::Deployment::Environment>] All environments for this source
|
28
29
|
attr_reader :environments
|
29
30
|
|
31
|
+
# Create a new source from a hash representation
|
32
|
+
#
|
33
|
+
# @param name [String] The name of the source
|
34
|
+
# @param opts [Hash] The properties to use for the source
|
35
|
+
# @param prefix [true, false] Whether to prefix the source name to created
|
36
|
+
# environments
|
37
|
+
#
|
38
|
+
# @option opts [String] :remote The git remote for the given source
|
39
|
+
# @option opts [String] :basedir The directory to create environments in
|
40
|
+
# @option opts [true, false] :prefix Whether the environment names should
|
41
|
+
# be prefixed by the source name. Defaults to false. This takes precedence
|
42
|
+
# over the `prefix` argument
|
43
|
+
#
|
44
|
+
# @return [R10K::Deployment::Source]
|
30
45
|
def self.vivify(name, attrs, prefix = false)
|
31
46
|
remote = (attrs.delete(:remote) || attrs.delete('remote'))
|
32
47
|
basedir = (attrs.delete(:basedir) || attrs.delete('basedir'))
|
data/lib/r10k/task/deployment.rb
CHANGED
@@ -102,21 +102,14 @@ module Deployment
|
|
102
102
|
|
103
103
|
def initialize(deployment)
|
104
104
|
@deployment = deployment
|
105
|
+
@basedirs = @deployment.sources.map { |x| x.basedir }.uniq
|
105
106
|
end
|
106
107
|
|
107
108
|
def call
|
108
|
-
@
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
if stale_envs.empty?
|
114
|
-
logger.debug "No stale environments in #{dir}"
|
115
|
-
else
|
116
|
-
logger.info "Purging stale environments from #{dir}"
|
117
|
-
logger.debug "Stale modules in #{dir}: #{stale_envs.join(', ')}"
|
118
|
-
source.purge!
|
119
|
-
end
|
109
|
+
@basedirs.each do |path|
|
110
|
+
basedir = R10K::Deployment::Basedir.new(path,@deployment)
|
111
|
+
logger.info "Purging stale environments from #{path}"
|
112
|
+
basedir.purge!
|
120
113
|
end
|
121
114
|
end
|
122
115
|
end
|
data/lib/r10k/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r10k
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.1rc1
|
5
|
+
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Adrien Thebo
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colored
|
@@ -135,6 +135,7 @@ files:
|
|
135
135
|
- lib/r10k/deployment/environment.rb
|
136
136
|
- lib/r10k/deployment/config/loader.rb
|
137
137
|
- lib/r10k/deployment/config.rb
|
138
|
+
- lib/r10k/deployment/basedir.rb
|
138
139
|
- lib/r10k/deployment/source.rb
|
139
140
|
- lib/r10k/util/purgeable.rb
|
140
141
|
- lib/r10k/cli/environment.rb
|
@@ -172,8 +173,43 @@ files:
|
|
172
173
|
- spec/unit/settings/container_spec.rb
|
173
174
|
- spec/unit/module/forge_spec.rb
|
174
175
|
homepage: http://github.com/adrienthebo/r10k
|
175
|
-
licenses:
|
176
|
-
|
176
|
+
licenses:
|
177
|
+
- Apache 2.0
|
178
|
+
post_install_message: ! 'NOTICE
|
179
|
+
|
180
|
+
======
|
181
|
+
|
182
|
+
|
183
|
+
If you are upgrading from 1.1.0 and are using multiple sources, please read
|
184
|
+
|
185
|
+
this. (If not, feel free to continue with your regularly scheduled day.)
|
186
|
+
|
187
|
+
|
188
|
+
GH-48 (https://github.com/adrienthebo/r10k/issues/48) introduced the ability
|
189
|
+
|
190
|
+
for environments to be prefixed with the source name so that multiple sources
|
191
|
+
|
192
|
+
installed into the same directory would not overwrite each other. However
|
193
|
+
|
194
|
+
prefixing was automatically enabled and would break existing setups where
|
195
|
+
|
196
|
+
multiple sources were cloned into different directories.
|
197
|
+
|
198
|
+
|
199
|
+
Because this introduced a breaking change, SemVer dictates that the automatic
|
200
|
+
|
201
|
+
prefixing has to be rolled back. Prefixing can be enabled but always defaults
|
202
|
+
|
203
|
+
to off. If you are relying on this behavior you will need to update your r10k.yaml
|
204
|
+
|
205
|
+
to enable prefixing on a per-source basis.
|
206
|
+
|
207
|
+
|
208
|
+
Please see the issue (https://github.com/adrienthebo/r10k/issues/48) for more
|
209
|
+
|
210
|
+
information.
|
211
|
+
|
212
|
+
'
|
177
213
|
rdoc_options: []
|
178
214
|
require_paths:
|
179
215
|
- lib
|
@@ -186,9 +222,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
186
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
223
|
none: false
|
188
224
|
requirements:
|
189
|
-
- - ! '
|
225
|
+
- - ! '>'
|
190
226
|
- !ruby/object:Gem::Version
|
191
|
-
version:
|
227
|
+
version: 1.3.1
|
192
228
|
requirements: []
|
193
229
|
rubyforge_project:
|
194
230
|
rubygems_version: 1.8.23
|