r10k 3.5.1 → 3.9.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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.github/pull_request_template.md +4 -1
  3. data/.github/workflows/docker.yml +4 -1
  4. data/.github/workflows/release.yml +3 -2
  5. data/.github/workflows/rspec_tests.yml +81 -0
  6. data/.travis.yml +8 -1
  7. data/CHANGELOG.mkd +43 -2
  8. data/CODEOWNERS +2 -2
  9. data/README.mkd +13 -4
  10. data/doc/common-patterns.mkd +1 -0
  11. data/doc/dynamic-environments/configuration.mkd +143 -39
  12. data/doc/dynamic-environments/usage.mkd +12 -11
  13. data/doc/puppetfile.mkd +23 -3
  14. data/docker/Gemfile +1 -1
  15. data/docker/Makefile +7 -4
  16. data/docker/docker-compose.yml +18 -0
  17. data/docker/r10k/Dockerfile +4 -3
  18. data/docker/r10k/docker-entrypoint.sh +0 -1
  19. data/docker/r10k/release.Dockerfile +3 -2
  20. data/docker/spec/dockerfile_spec.rb +26 -32
  21. data/integration/tests/git_source/git_source_repeated_remote.rb +68 -0
  22. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module.rb +2 -1
  23. data/integration/tests/user_scenario/basic_workflow/multi_env_custom_forge_git_module_static.rb +2 -1
  24. data/integration/tests/user_scenario/basic_workflow/multi_source_custom_forge_git_module.rb +1 -1
  25. data/integration/tests/user_scenario/basic_workflow/single_env_custom_forge_git_module.rb +2 -1
  26. data/integration/tests/user_scenario/complex_workflow/multi_env_add_change_remove.rb +1 -1
  27. data/integration/tests/user_scenario/complex_workflow/multi_env_remove_re-add.rb +1 -1
  28. data/integration/tests/user_scenario/complex_workflow/multi_env_unamanaged.rb +1 -1
  29. data/lib/r10k/action/deploy/display.rb +9 -3
  30. data/lib/r10k/action/deploy/environment.rb +39 -14
  31. data/lib/r10k/action/deploy/module.rb +4 -1
  32. data/lib/r10k/action/runner.rb +34 -0
  33. data/lib/r10k/cli/deploy.rb +14 -7
  34. data/lib/r10k/cli/puppetfile.rb +5 -5
  35. data/lib/r10k/environment/base.rb +9 -2
  36. data/lib/r10k/environment/git.rb +17 -2
  37. data/lib/r10k/environment/name.rb +22 -4
  38. data/lib/r10k/environment/svn.rb +11 -2
  39. data/lib/r10k/environment/with_modules.rb +28 -20
  40. data/lib/r10k/forge/module_release.rb +2 -2
  41. data/lib/r10k/git.rb +1 -0
  42. data/lib/r10k/git/cache.rb +12 -4
  43. data/lib/r10k/git/rugged/credentials.rb +39 -2
  44. data/lib/r10k/git/stateful_repository.rb +4 -0
  45. data/lib/r10k/initializers.rb +2 -0
  46. data/lib/r10k/module/base.rb +8 -0
  47. data/lib/r10k/module/forge.rb +16 -4
  48. data/lib/r10k/module/git.rb +42 -24
  49. data/lib/r10k/module/local.rb +1 -1
  50. data/lib/r10k/module/svn.rb +14 -11
  51. data/lib/r10k/puppetfile.rb +30 -12
  52. data/lib/r10k/settings.rb +30 -3
  53. data/lib/r10k/source/base.rb +5 -0
  54. data/lib/r10k/source/git.rb +26 -3
  55. data/lib/r10k/source/hash.rb +4 -2
  56. data/lib/r10k/source/svn.rb +5 -1
  57. data/lib/r10k/util/setopts.rb +33 -12
  58. data/lib/r10k/version.rb +1 -1
  59. data/locales/r10k.pot +71 -43
  60. data/r10k.gemspec +1 -1
  61. data/spec/fixtures/unit/action/r10k_creds.yaml +9 -0
  62. data/spec/shared-examples/subprocess-runner.rb +11 -5
  63. data/spec/unit/action/deploy/display_spec.rb +4 -0
  64. data/spec/unit/action/deploy/environment_spec.rb +154 -12
  65. data/spec/unit/action/deploy/module_spec.rb +40 -1
  66. data/spec/unit/action/puppetfile/install_spec.rb +1 -0
  67. data/spec/unit/action/runner_spec.rb +48 -1
  68. data/spec/unit/environment/git_spec.rb +19 -2
  69. data/spec/unit/environment/name_spec.rb +28 -0
  70. data/spec/unit/environment/svn_spec.rb +12 -0
  71. data/spec/unit/environment/with_modules_spec.rb +74 -0
  72. data/spec/unit/forge/module_release_spec.rb +14 -10
  73. data/spec/unit/git/cache_spec.rb +10 -0
  74. data/spec/unit/git/rugged/credentials_spec.rb +79 -2
  75. data/spec/unit/git_spec.rb +3 -3
  76. data/spec/unit/module/forge_spec.rb +6 -0
  77. data/spec/unit/module/git_spec.rb +56 -1
  78. data/spec/unit/module_spec.rb +59 -9
  79. data/spec/unit/puppetfile_spec.rb +61 -7
  80. data/spec/unit/settings_spec.rb +12 -0
  81. data/spec/unit/source/git_spec.rb +49 -1
  82. data/spec/unit/util/setopts_spec.rb +25 -1
  83. metadata +9 -11
  84. data/azure-pipelines.yml +0 -86
data/lib/r10k/settings.rb CHANGED
@@ -12,6 +12,8 @@ module R10K
12
12
  class << self
13
13
  # Path to puppet executable
14
14
  attr_accessor :puppet_path
15
+ # Path to puppet.conf
16
+ attr_accessor :puppet_conf
15
17
  end
16
18
 
17
19
  def self.git_settings
@@ -35,6 +37,11 @@ module R10K
35
37
  Only used by the 'rugged' Git provider.",
36
38
  }),
37
39
 
40
+ Definition.new(:oauth_token, {
41
+ :desc => "The path to a token file for Git OAuth remotes.
42
+ Only used by the 'rugged' Git provider."
43
+ }),
44
+
38
45
  URIDefinition.new(:proxy, {
39
46
  :desc => "An optional proxy server to use when interacting with Git sources via HTTP(S).",
40
47
  :default => :inherit,
@@ -52,11 +59,17 @@ module R10K
52
59
  :default => :inherit,
53
60
  }),
54
61
 
62
+ Definition.new(:oauth_token, {
63
+ :desc => "The path to a token file for Git OAuth remotes.
64
+ Only used by the 'rugged' Git provider.",
65
+ :default => :inherit
66
+ }),
67
+
55
68
  URIDefinition.new(:proxy, {
56
69
  :desc => "An optional proxy server to use when interacting with Git sources via HTTP(S).",
57
70
  :default => :inherit,
58
71
  }),
59
-
72
+
60
73
  Definition.new(:ignore_branch_prefixes, {
61
74
  :desc => "Array of strings used to prefix branch names that will not be deployed as environments.",
62
75
  }),
@@ -109,11 +122,16 @@ module R10K
109
122
  end,
110
123
  }),
111
124
 
112
- Definition.new(:purge_whitelist, {
125
+ Definition.new(:purge_allowlist, {
113
126
  :desc => "A list of filename patterns to be excluded from any purge operations. Patterns are matched relative to the root of each deployed environment, if you want a pattern to match recursively you need to use the '**' glob in your pattern. Basic shell style globs are supported.",
114
127
  :default => [],
115
128
  }),
116
129
 
130
+ Definition.new(:purge_whitelist, {
131
+ :desc => "Deprecated; please use purge_allowlist instead. This setting will be removed in a future version.",
132
+ :default => [],
133
+ }),
134
+
117
135
  Definition.new(:generate_types, {
118
136
  :desc => "Controls whether to generate puppet types after deploying an environment. Defaults to false.",
119
137
  :default => false,
@@ -131,6 +149,15 @@ module R10K
131
149
  end
132
150
  end
133
151
  }),
152
+ Definition.new(:puppet_conf, {
153
+ :desc => "Path to puppet.conf. Defaults to /etc/puppetlabs/puppet/puppet.conf.",
154
+ :default => '/etc/puppetlabs/puppet/puppet.conf',
155
+ :validate => lambda do |value|
156
+ unless File.readable? value
157
+ raise ArgumentError, "The specified puppet.conf #{value} is not readable"
158
+ end
159
+ end
160
+ }),
134
161
  ])
135
162
  end
136
163
 
@@ -160,7 +187,7 @@ module R10K
160
187
 
161
188
  Definition.new(:pool_size, {
162
189
  :desc => "The amount of threads used to concurrently install modules. The default value is 1: install one module at a time.",
163
- :default => 1,
190
+ :default => 4,
164
191
  :validate => lambda do |value|
165
192
  if !value.is_a?(Integer)
166
193
  raise ArgumentError, "The pool_size setting should be an integer, not a #{value.class}"
@@ -31,10 +31,15 @@ class R10K::Source::Base
31
31
  # @option options [Boolean, String] :prefix If a String this becomes the prefix.
32
32
  # If true, will use the source name as the prefix. All sources should respect this option.
33
33
  # Defaults to false for no environment prefix.
34
+ # @option options [String] :strip_component If a string, this value will be
35
+ # removed from the beginning of each generated environment's name, if
36
+ # present. If the string is contained within two "/" characters, it will
37
+ # be treated as a regular expression.
34
38
  def initialize(name, basedir, options = {})
35
39
  @name = name
36
40
  @basedir = Pathname.new(basedir).cleanpath.to_s
37
41
  @prefix = options.delete(:prefix)
42
+ @strip_component = options.delete(:strip_component)
38
43
  @puppetfile_name = options.delete(:puppetfile_name)
39
44
  @options = options
40
45
  end
@@ -41,6 +41,10 @@ class R10K::Source::Git < R10K::Source::Base
41
41
  # that will be deployed as environments.
42
42
  attr_reader :ignore_branch_prefixes
43
43
 
44
+ # @!attribute [r] filter_command
45
+ # @return [String] Command to run to filter branches
46
+ attr_reader :filter_command
47
+
44
48
  # Initialize the given source.
45
49
  #
46
50
  # @param name [String] The identifier for this source.
@@ -61,6 +65,7 @@ class R10K::Source::Git < R10K::Source::Base
61
65
  @remote = options[:remote]
62
66
  @invalid_branches = (options[:invalid_branches] || 'correct_and_warn')
63
67
  @ignore_branch_prefixes = options[:ignore_branch_prefixes]
68
+ @filter_command = options[:filter_command]
64
69
 
65
70
  @cache = R10K::Git.cache.generate(@remote)
66
71
  end
@@ -115,7 +120,7 @@ class R10K::Source::Git < R10K::Source::Base
115
120
  environments.map {|env| env.dirname }
116
121
  end
117
122
 
118
- def filter_branches(branches, ignore_prefixes)
123
+ def filter_branches_by_regexp(branches, ignore_prefixes)
119
124
  filter = Regexp.new("^#{Regexp.union(ignore_prefixes)}")
120
125
  branches = branches.reject do |branch|
121
126
  result = filter.match(branch)
@@ -127,14 +132,32 @@ class R10K::Source::Git < R10K::Source::Base
127
132
  branches
128
133
  end
129
134
 
135
+ def filter_branches_by_command(branches, command)
136
+ branches.select do |branch|
137
+ result = system({'GIT_DIR' => @cache.git_dir.to_s, 'R10K_BRANCH' => branch, 'R10K_NAME' => @name.to_s}, command)
138
+ unless result
139
+ logger.warn _("Branch `%{name}:%{branch}` filtered out by filter_command %{cmd}") % {name: @name, branch: branch, cmd: command}
140
+ end
141
+ result
142
+ end
143
+ end
144
+
130
145
  private
131
146
 
132
147
  def branch_names
133
- opts = {:prefix => @prefix, :invalid => @invalid_branches, :source => @name}
148
+ opts = {prefix: @prefix,
149
+ invalid: @invalid_branches,
150
+ source: @name,
151
+ strip_component: @strip_component}
134
152
  branches = @cache.branches
135
153
  if @ignore_branch_prefixes && !@ignore_branch_prefixes.empty?
136
- branches = filter_branches(branches, @ignore_branch_prefixes)
154
+ branches = filter_branches_by_regexp(branches, @ignore_branch_prefixes)
155
+ end
156
+
157
+ if @filter_command && !@filter_command.empty?
158
+ branches = filter_branches_by_command(branches, @filter_command)
137
159
  end
160
+
138
161
  branches.map do |branch|
139
162
  R10K::Environment::Name.new(branch, opts)
140
163
  end
@@ -152,8 +152,10 @@ class R10K::Source::Hash < R10K::Source::Base
152
152
  R10K::Util::SymbolizeKeys.symbolize_keys!(opts)
153
153
  memo.merge({
154
154
  name => opts.merge({
155
- :basedir => @basedir,
156
- :dirname => R10K::Environment::Name.new(name, {prefix: @prefix, source: @name}).dirname
155
+ basedir: @basedir,
156
+ dirname: R10K::Environment::Name.new(name, {prefix: @prefix,
157
+ source: @name,
158
+ strip_component: @strip_component}).dirname
157
159
  })
158
160
  })
159
161
  end
@@ -121,7 +121,11 @@ class R10K::Source::SVN < R10K::Source::Base
121
121
 
122
122
  def names_and_paths
123
123
  branches = []
124
- opts = {:prefix => @prefix, :correct => false, :validate => false, :source => @name}
124
+ opts = {prefix: @prefix,
125
+ correct: false,
126
+ validate: false,
127
+ source: @name,
128
+ strip_component: @strip_component}
125
129
  branches << [R10K::Environment::Name.new('production', opts), "#{@remote}/trunk"]
126
130
  additional_branch_names = @svn_remote.branches
127
131
  if @ignore_branch_prefixes && !@ignore_branch_prefixes.empty?
@@ -7,6 +7,10 @@ module R10K
7
7
  # supports Ruby 1.8.7+ we cannot use that functionality.
8
8
  module Setopts
9
9
 
10
+ class Ignore; end
11
+
12
+ include R10K::Logging
13
+
10
14
  private
11
15
 
12
16
  # @param opts [Hash]
@@ -31,22 +35,39 @@ module R10K
31
35
  # setopts(opts, allowed)
32
36
  # @trace # => nil
33
37
  #
34
- def setopts(opts, allowed)
38
+ def setopts(opts, allowed, raise_on_unhandled: true)
39
+ processed_vars = {}
35
40
  opts.each_pair do |key, value|
36
41
  if allowed.key?(key)
37
- rhs = allowed[key]
38
- case rhs
39
- when NilClass, FalseClass
40
- # Ignore nil options
41
- when :self, TrueClass
42
- # tr here is because instance variables cannot have hyphens in their names.
43
- instance_variable_set("@#{key}".tr('-','_').to_sym, value)
44
- else
45
- # tr here same as previous
46
- instance_variable_set("@#{rhs}".tr('-','_').to_sym, value)
42
+ # Ignore nil options and explicit ignore param
43
+ next unless rhs = allowed[key]
44
+ next if rhs == ::R10K::Util::Setopts::Ignore
45
+
46
+ var = case rhs
47
+ when :self, TrueClass
48
+ # tr here is because instance variables cannot have hyphens in their names.
49
+ "@#{key}".tr('-','_').to_sym
50
+ else
51
+ # tr here same as previous
52
+ "@#{rhs}".tr('-','_').to_sym
53
+ end
54
+
55
+ if processed_vars.include?(var)
56
+ # This should be a raise, but that would be a behavior change and
57
+ # should happen on a SemVer boundry.
58
+ logger.warn _("%{class_name} parameters '%{a}' and '%{b}' conflict. Specify one or the other, but not both" \
59
+ % {class_name: self.class.name, a: processed_vars[var], b: key})
47
60
  end
61
+
62
+ instance_variable_set(var, value)
63
+ processed_vars[var] = key
48
64
  else
49
- raise ArgumentError, _("%{class_name} cannot handle option '%{key}'") % {class_name: self.class.name, key: key}
65
+ err_str = _("%{class_name} cannot handle option '%{key}'") % {class_name: self.class.name, key: key}
66
+ if raise_on_unhandled
67
+ raise ArgumentError, err_str
68
+ else
69
+ logger.warn(err_str)
70
+ end
50
71
  end
51
72
  end
52
73
  end
data/lib/r10k/version.rb CHANGED
@@ -2,5 +2,5 @@ module R10K
2
2
  # When updating to a new major (X) or minor (Y) version, include `#major` or
3
3
  # `#minor` (respectively) in your commit message to trigger the appropriate
4
4
  # release. Otherwise, a new patch (Z) version will be released.
5
- VERSION = '3.5.1'
5
+ VERSION = '3.9.0'
6
6
  end
data/locales/r10k.pot CHANGED
@@ -1,16 +1,16 @@
1
1
  # SOME DESCRIPTIVE TITLE.
2
- # Copyright (C) 2020 Puppet, Inc.
2
+ # Copyright (C) 2021 Puppet, Inc.
3
3
  # This file is distributed under the same license as the r10k package.
4
- # FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
4
+ # FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
5
5
  #
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: r10k 3.4.1-20-g8fe925b\n"
9
+ "Project-Id-Version: r10k 3.4.1-151-g93d38cb\n"
10
10
  "\n"
11
11
  "Report-Msgid-Bugs-To: docs@puppetlabs.com\n"
12
- "POT-Creation-Date: 2020-04-28 18:41+0000\n"
13
- "PO-Revision-Date: 2020-04-28 18:41+0000\n"
12
+ "POT-Creation-Date: 2021-03-15 17:00+0000\n"
13
+ "PO-Revision-Date: 2021-03-15 17:00+0000\n"
14
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
15
  "Language-Team: LANGUAGE <LL@li.org>\n"
16
16
  "Language: \n"
@@ -83,15 +83,15 @@ msgstr ""
83
83
  msgid "Cannot track control repo branch for content '%{name}' when not part of a 'deploy' action, will use default if available."
84
84
  msgstr ""
85
85
 
86
- #: ../lib/r10k/action/runner.rb:53 ../lib/r10k/deployment/config.rb:42
86
+ #: ../lib/r10k/action/runner.rb:54 ../lib/r10k/deployment/config.rb:42
87
87
  msgid "Overriding config file setting '%{key}': '%{old_val}' -> '%{new_val}'"
88
88
  msgstr ""
89
89
 
90
- #: ../lib/r10k/action/runner.rb:86
90
+ #: ../lib/r10k/action/runner.rb:91
91
91
  msgid "Reading configuration from %{config_path}"
92
92
  msgstr ""
93
93
 
94
- #: ../lib/r10k/action/runner.rb:89
94
+ #: ../lib/r10k/action/runner.rb:94
95
95
  msgid "No config file explicitly given and no default config file could be found, default settings will be used."
96
96
  msgstr ""
97
97
 
@@ -103,16 +103,24 @@ msgstr ""
103
103
  msgid "Unable to load sources; the supplied configuration does not define the 'sources' key"
104
104
  msgstr ""
105
105
 
106
- #: ../lib/r10k/environment/base.rb:61 ../lib/r10k/environment/base.rb:77 ../lib/r10k/environment/base.rb:86 ../lib/r10k/source/base.rb:64
106
+ #: ../lib/r10k/environment/base.rb:61 ../lib/r10k/environment/base.rb:77 ../lib/r10k/environment/base.rb:86 ../lib/r10k/source/base.rb:69
107
107
  msgid "%{class} has not implemented method %{method}"
108
108
  msgstr ""
109
109
 
110
- #: ../lib/r10k/environment/with_modules.rb:104
111
- msgid "Puppetfile cannot contain module names defined by environment %{name}"
110
+ #: ../lib/r10k/environment/name.rb:78
111
+ msgid "Improper configuration value given for strip_component setting in %{src} source. Value must be a string, a /regex/, false, or omitted. Got \"%{val}\" (%{type})"
112
112
  msgstr ""
113
113
 
114
- #: ../lib/r10k/environment/with_modules.rb:106
115
- msgid "Remove the conflicting definitions of the following modules: %{conflicts}"
114
+ #: ../lib/r10k/environment/with_modules.rb:60
115
+ msgid "Environment and %{src} both define the \"%{name}\" module"
116
+ msgstr ""
117
+
118
+ #: ../lib/r10k/environment/with_modules.rb:61
119
+ msgid "#{msg_error}. The %{src} definition will be ignored"
120
+ msgstr ""
121
+
122
+ #: ../lib/r10k/environment/with_modules.rb:71
123
+ msgid "Unexpected value for `module_conflicts` setting in %{env} environment: %{val}"
116
124
  msgstr ""
117
125
 
118
126
  #: ../lib/r10k/feature.rb:27
@@ -187,11 +195,11 @@ msgstr ""
187
195
  msgid "Cannot write %{file}; parent directory does not exist"
188
196
  msgstr ""
189
197
 
190
- #: ../lib/r10k/git/cache.rb:55
198
+ #: ../lib/r10k/git/cache.rb:65
191
199
  msgid "%{class}#path is deprecated; use #git_dir"
192
200
  msgstr ""
193
201
 
194
- #: ../lib/r10k/git/cache.rb:84
202
+ #: ../lib/r10k/git/cache.rb:94
195
203
  msgid "Creating new git cache for %{remote}"
196
204
  msgstr ""
197
205
 
@@ -227,15 +235,31 @@ msgstr ""
227
235
  msgid "Unable to use SSH key auth for %{url}: private key %{private_key} is missing or unreadable"
228
236
  msgstr ""
229
237
 
230
- #: ../lib/r10k/git/rugged/credentials.rb:80
238
+ #: ../lib/r10k/git/rugged/credentials.rb:84
239
+ msgid "Using OAuth token from stdin for URL %{url}"
240
+ msgstr ""
241
+
242
+ #: ../lib/r10k/git/rugged/credentials.rb:87
243
+ msgid "Using OAuth token from %{token_path} for URL %{url}"
244
+ msgstr ""
245
+
246
+ #: ../lib/r10k/git/rugged/credentials.rb:89
247
+ msgid "%{path} is missing or unreadable, cannot load OAuth token"
248
+ msgstr ""
249
+
250
+ #: ../lib/r10k/git/rugged/credentials.rb:93
251
+ msgid "Supplied OAuth token contains invalid characters."
252
+ msgstr ""
253
+
254
+ #: ../lib/r10k/git/rugged/credentials.rb:117
231
255
  msgid "URL %{url} includes the username %{username}, using that user for authentication."
232
256
  msgstr ""
233
257
 
234
- #: ../lib/r10k/git/rugged/credentials.rb:83
258
+ #: ../lib/r10k/git/rugged/credentials.rb:120
235
259
  msgid "URL %{url} did not specify a user, using %{user} from configuration"
236
260
  msgstr ""
237
261
 
238
- #: ../lib/r10k/git/rugged/credentials.rb:86
262
+ #: ../lib/r10k/git/rugged/credentials.rb:123
239
263
  msgid "URL %{url} did not specify a user, using current user %{user}"
240
264
  msgstr ""
241
265
 
@@ -255,31 +279,31 @@ msgstr ""
255
279
  msgid "Found local modifications in %{file_path}"
256
280
  msgstr ""
257
281
 
258
- #: ../lib/r10k/git/stateful_repository.rb:40
282
+ #: ../lib/r10k/git/stateful_repository.rb:44
259
283
  msgid "Unable to sync repo to unresolvable ref '%{ref}'"
260
284
  msgstr ""
261
285
 
262
- #: ../lib/r10k/git/stateful_repository.rb:47
286
+ #: ../lib/r10k/git/stateful_repository.rb:51
263
287
  msgid "Cloning %{repo_path} and checking out %{ref}"
264
288
  msgstr ""
265
289
 
266
- #: ../lib/r10k/git/stateful_repository.rb:50
290
+ #: ../lib/r10k/git/stateful_repository.rb:54
267
291
  msgid "Replacing %{repo_path} and checking out %{ref}"
268
292
  msgstr ""
269
293
 
270
- #: ../lib/r10k/git/stateful_repository.rb:54 ../lib/r10k/git/stateful_repository.rb:59
294
+ #: ../lib/r10k/git/stateful_repository.rb:58 ../lib/r10k/git/stateful_repository.rb:63
271
295
  msgid "Updating %{repo_path} to %{ref}"
272
296
  msgstr ""
273
297
 
274
- #: ../lib/r10k/git/stateful_repository.rb:58
298
+ #: ../lib/r10k/git/stateful_repository.rb:62
275
299
  msgid "Overwriting local modifications to %{repo_path}"
276
300
  msgstr ""
277
301
 
278
- #: ../lib/r10k/git/stateful_repository.rb:62
302
+ #: ../lib/r10k/git/stateful_repository.rb:66
279
303
  msgid "Skipping %{repo_path} due to local modifications"
280
304
  msgstr ""
281
305
 
282
- #: ../lib/r10k/git/stateful_repository.rb:65
306
+ #: ../lib/r10k/git/stateful_repository.rb:69
283
307
  msgid "%{repo_path} is already at Git ref %{ref}"
284
308
  msgstr ""
285
309
 
@@ -303,20 +327,16 @@ msgstr ""
303
327
  msgid "Module %{name} with args %{args} doesn't have an implementation. (Are you using the right arguments?)"
304
328
  msgstr ""
305
329
 
306
- #: ../lib/r10k/module/base.rb:110
330
+ #: ../lib/r10k/module/base.rb:118
307
331
  msgid "Module name (%{title}) must match either 'modulename' or 'owner/modulename'"
308
332
  msgstr ""
309
333
 
310
- #: ../lib/r10k/module/forge.rb:70 ../lib/r10k/module/forge.rb:99
334
+ #: ../lib/r10k/module/forge.rb:81 ../lib/r10k/module/forge.rb:110
311
335
  msgid "The module %{title} does not exist on %{url}."
312
336
  msgstr ""
313
337
 
314
- #: ../lib/r10k/module/forge.rb:174
315
- msgid "Forge module names must match 'owner/modulename'"
316
- msgstr ""
317
-
318
- #: ../lib/r10k/module/git.rb:97
319
- msgid "Unhandled options %{unhandled} specified for %{class}"
338
+ #: ../lib/r10k/module/forge.rb:185
339
+ msgid "Forge module names must match 'owner/modulename', instead got #{title}"
320
340
  msgstr ""
321
341
 
322
342
  #: ../lib/r10k/module/local.rb:34
@@ -347,19 +367,19 @@ msgstr ""
347
367
  msgid "Remove the duplicates of the following modules: %{dupes}"
348
368
  msgstr ""
349
369
 
350
- #: ../lib/r10k/puppetfile.rb:192
370
+ #: ../lib/r10k/puppetfile.rb:201
351
371
  msgid "Updating modules with %{pool_size} threads"
352
372
  msgstr ""
353
373
 
354
- #: ../lib/r10k/puppetfile.rb:203
374
+ #: ../lib/r10k/puppetfile.rb:212
355
375
  msgid "Error during concurrent deploy of a module: %{message}"
356
376
  msgstr ""
357
377
 
358
- #: ../lib/r10k/puppetfile.rb:225
378
+ #: ../lib/r10k/puppetfile.rb:241
359
379
  msgid "Module thread %{id} exiting: %{message}"
360
380
  msgstr ""
361
381
 
362
- #: ../lib/r10k/puppetfile.rb:282
382
+ #: ../lib/r10k/puppetfile.rb:300
363
383
  msgid "unrecognized declaration '%{method}'"
364
384
  msgstr ""
365
385
 
@@ -442,26 +462,30 @@ msgid ""
442
462
  "Returned: %{data}"
443
463
  msgstr ""
444
464
 
445
- #: ../lib/r10k/source/git.rb:72
465
+ #: ../lib/r10k/source/git.rb:77
446
466
  msgid "Fetching '%{remote}' to determine current branches."
447
467
  msgstr ""
448
468
 
449
- #: ../lib/r10k/source/git.rb:75
469
+ #: ../lib/r10k/source/git.rb:80
450
470
  msgid "Unable to determine current branches for Git source '%{name}' (%{basedir})"
451
471
  msgstr ""
452
472
 
453
- #: ../lib/r10k/source/git.rb:100
473
+ #: ../lib/r10k/source/git.rb:105
454
474
  msgid "Environment %{env_name} contained non-word characters, correcting name to %{corrected_env_name}"
455
475
  msgstr ""
456
476
 
457
- #: ../lib/r10k/source/git.rb:104
477
+ #: ../lib/r10k/source/git.rb:109
458
478
  msgid "Environment %{env_name} contained non-word characters, ignoring it."
459
479
  msgstr ""
460
480
 
461
- #: ../lib/r10k/source/git.rb:123 ../lib/r10k/source/svn.rb:113
481
+ #: ../lib/r10k/source/git.rb:128 ../lib/r10k/source/svn.rb:113
462
482
  msgid "Branch %{branch} filtered out by ignore_branch_prefixes %{ibp}"
463
483
  msgstr ""
464
484
 
485
+ #: ../lib/r10k/source/git.rb:139
486
+ msgid "Branch `%{name}:%{branch}` filtered out by filter_command %{cmd}"
487
+ msgstr ""
488
+
465
489
  #: ../lib/r10k/source/yaml.rb:10
466
490
  msgid "Couldn't open environments file %{file}: %{err}"
467
491
  msgstr ""
@@ -522,7 +546,11 @@ msgstr ""
522
546
  msgid "Unable to remove unmanaged path: %{path}"
523
547
  msgstr ""
524
548
 
525
- #: ../lib/r10k/util/setopts.rb:49
549
+ #: ../lib/r10k/util/setopts.rb:58
550
+ msgid "%{class_name} parameters '%{a}' and '%{b}' conflict. Specify one or the other, but not both"
551
+ msgstr ""
552
+
553
+ #: ../lib/r10k/util/setopts.rb:65
526
554
  msgid "%{class_name} cannot handle option '%{key}'"
527
555
  msgstr ""
528
556