r10k 3.9.0 → 3.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.github/pull_request_template.md +1 -1
  3. data/.github/workflows/rspec_tests.yml +1 -1
  4. data/.github/workflows/stale.yml +19 -0
  5. data/CHANGELOG.mkd +24 -0
  6. data/doc/dynamic-environments/configuration.mkd +13 -6
  7. data/integration/Rakefile +1 -1
  8. data/integration/tests/user_scenario/basic_workflow/negative/neg_specify_deleted_forge_module.rb +3 -9
  9. data/integration/tests/user_scenario/basic_workflow/single_env_purge_unmanaged_modules.rb +8 -14
  10. data/lib/r10k/action/base.rb +10 -0
  11. data/lib/r10k/action/deploy/display.rb +42 -9
  12. data/lib/r10k/action/deploy/environment.rb +70 -41
  13. data/lib/r10k/action/deploy/module.rb +51 -29
  14. data/lib/r10k/action/puppetfile/check.rb +3 -1
  15. data/lib/r10k/action/puppetfile/install.rb +20 -23
  16. data/lib/r10k/action/puppetfile/purge.rb +8 -2
  17. data/lib/r10k/action/runner.rb +11 -6
  18. data/lib/r10k/content_synchronizer.rb +83 -0
  19. data/lib/r10k/deployment.rb +1 -1
  20. data/lib/r10k/environment/base.rb +21 -1
  21. data/lib/r10k/environment/git.rb +0 -3
  22. data/lib/r10k/environment/svn.rb +4 -6
  23. data/lib/r10k/environment/with_modules.rb +18 -10
  24. data/lib/r10k/git/cache.rb +1 -1
  25. data/lib/r10k/initializers.rb +7 -0
  26. data/lib/r10k/module.rb +1 -1
  27. data/lib/r10k/module/base.rb +17 -1
  28. data/lib/r10k/module/forge.rb +29 -19
  29. data/lib/r10k/module/git.rb +23 -14
  30. data/lib/r10k/module/local.rb +1 -0
  31. data/lib/r10k/module/svn.rb +12 -9
  32. data/lib/r10k/module_loader/puppetfile.rb +195 -0
  33. data/lib/r10k/module_loader/puppetfile/dsl.rb +37 -0
  34. data/lib/r10k/puppetfile.rb +111 -202
  35. data/lib/r10k/settings.rb +3 -0
  36. data/lib/r10k/source/base.rb +14 -0
  37. data/lib/r10k/source/git.rb +19 -6
  38. data/lib/r10k/source/hash.rb +1 -3
  39. data/lib/r10k/source/svn.rb +4 -2
  40. data/lib/r10k/util/cleaner.rb +21 -0
  41. data/lib/r10k/util/purgeable.rb +70 -8
  42. data/lib/r10k/version.rb +1 -1
  43. data/locales/r10k.pot +67 -71
  44. data/spec/fixtures/unit/action/r10k_forge_auth.yaml +4 -0
  45. data/spec/fixtures/unit/action/r10k_forge_auth_no_url.yaml +3 -0
  46. data/spec/fixtures/unit/util/purgeable/managed_one/managed_subdir_1/managed_subdir_2/ignored_1 +0 -0
  47. data/spec/fixtures/unit/util/purgeable/managed_two/.hidden/unmanaged_3 +0 -0
  48. data/spec/r10k-mocks/mock_source.rb +1 -1
  49. data/spec/shared-examples/puppetfile-action.rb +7 -7
  50. data/spec/unit/action/deploy/display_spec.rb +32 -6
  51. data/spec/unit/action/deploy/environment_spec.rb +85 -48
  52. data/spec/unit/action/deploy/module_spec.rb +163 -31
  53. data/spec/unit/action/puppetfile/check_spec.rb +2 -2
  54. data/spec/unit/action/puppetfile/install_spec.rb +31 -10
  55. data/spec/unit/action/puppetfile/purge_spec.rb +25 -5
  56. data/spec/unit/action/runner_spec.rb +49 -25
  57. data/spec/unit/git/cache_spec.rb +14 -0
  58. data/spec/unit/module/forge_spec.rb +23 -14
  59. data/spec/unit/module/git_spec.rb +8 -8
  60. data/spec/unit/module_loader/puppetfile_spec.rb +330 -0
  61. data/spec/unit/module_spec.rb +22 -5
  62. data/spec/unit/puppetfile_spec.rb +123 -203
  63. data/spec/unit/settings_spec.rb +6 -2
  64. data/spec/unit/util/purgeable_spec.rb +40 -14
  65. metadata +12 -2
@@ -1,8 +1,12 @@
1
+ require 'r10k/logging'
2
+
1
3
  # This class defines a common interface for source implementations.
2
4
  #
3
5
  # @since 1.3.0
4
6
  class R10K::Source::Base
5
7
 
8
+ include R10K::Logging
9
+
6
10
  # @!attribute [r] basedir
7
11
  # @return [String] The path this source will place environments in
8
12
  attr_reader :basedir
@@ -59,6 +63,16 @@ class R10K::Source::Base
59
63
 
60
64
  end
61
65
 
66
+ # Perform actions to reload environments after the `preload!`. Similar
67
+ # to preload!, and likely to include network queries and rerunning
68
+ # environment generation.
69
+ #
70
+ # @api public
71
+ # @abstract
72
+ # @return [void]
73
+ def reload!
74
+ end
75
+
62
76
  # Enumerate the environments associated with this SVN source.
63
77
  #
64
78
  # @api public
@@ -11,8 +11,6 @@ require 'r10k/environment/name'
11
11
  # @since 1.3.0
12
12
  class R10K::Source::Git < R10K::Source::Base
13
13
 
14
- include R10K::Logging
15
-
16
14
  R10K::Source.register(:git, self)
17
15
  # Register git as the default source
18
16
  R10K::Source.register(nil, self)
@@ -95,16 +93,31 @@ class R10K::Source::Git < R10K::Source::Base
95
93
  end
96
94
  end
97
95
 
96
+ def reload!
97
+ @cache.sync!
98
+ @environments = generate_environments()
99
+ end
100
+
98
101
  def generate_environments
99
102
  envs = []
100
103
  branch_names.each do |bn|
101
104
  if bn.valid?
102
- envs << R10K::Environment::Git.new(bn.name, @basedir, bn.dirname,
103
- {:remote => remote, :ref => bn.name, :puppetfile_name => puppetfile_name })
105
+ envs << R10K::Environment::Git.new(bn.name,
106
+ @basedir,
107
+ bn.dirname,
108
+ {remote: remote,
109
+ ref: bn.name,
110
+ puppetfile_name: puppetfile_name,
111
+ overrides: @options[:overrides]})
104
112
  elsif bn.correct?
105
113
  logger.warn _("Environment %{env_name} contained non-word characters, correcting name to %{corrected_env_name}") % {env_name: bn.name.inspect, corrected_env_name: bn.dirname}
106
- envs << R10K::Environment::Git.new(bn.name, @basedir, bn.dirname,
107
- {:remote => remote, :ref => bn.name, :puppetfile_name => puppetfile_name})
114
+ envs << R10K::Environment::Git.new(bn.name,
115
+ @basedir,
116
+ bn.dirname,
117
+ {remote: remote,
118
+ ref: bn.name,
119
+ puppetfile_name: puppetfile_name,
120
+ overrides: @options[:overrides]})
108
121
  elsif bn.validate?
109
122
  logger.error _("Environment %{env_name} contained non-word characters, ignoring it.") % {env_name: bn.name.inspect}
110
123
  end
@@ -120,8 +120,6 @@
120
120
  #
121
121
  class R10K::Source::Hash < R10K::Source::Base
122
122
 
123
- include R10K::Logging
124
-
125
123
  # @param hash [Hash] A hash to validate.
126
124
  # @return [Boolean] False if the hash is obviously invalid. A true return
127
125
  # means _maybe_ it's valid.
@@ -170,7 +168,7 @@ class R10K::Source::Hash < R10K::Source::Base
170
168
 
171
169
  def environments
172
170
  @environments ||= environments_hash.map do |name, hash|
173
- R10K::Environment.from_hash(name, hash)
171
+ R10K::Environment.from_hash(name, hash.merge({overrides: @options[:overrides]}))
174
172
  end
175
173
  end
176
174
 
@@ -65,6 +65,10 @@ class R10K::Source::SVN < R10K::Source::Base
65
65
  @ignore_branch_prefixes = options[:ignore_branch_prefixes]
66
66
  end
67
67
 
68
+ def reload!
69
+ @environments = generate_environments()
70
+ end
71
+
68
72
  # Enumerate the environments associated with this SVN source.
69
73
  #
70
74
  # @return [Array<R10K::Environment::SVN>] An array of environments created
@@ -103,8 +107,6 @@ class R10K::Source::SVN < R10K::Source::Base
103
107
  @environments.map {|env| env.dirname }
104
108
  end
105
109
 
106
- include R10K::Logging
107
-
108
110
  def filter_branches(branches, ignore_prefixes)
109
111
  filter = Regexp.new("^(#{ignore_prefixes.join('|')})")
110
112
  branches = branches.reject do |branch|
@@ -0,0 +1,21 @@
1
+ require 'r10k/logging'
2
+ require 'r10k/util/purgeable'
3
+
4
+ module R10K
5
+ module Util
6
+ class Cleaner
7
+
8
+ include R10K::Logging
9
+ include R10K::Util::Purgeable
10
+
11
+ attr_reader :managed_directories, :desired_contents, :purge_exclusions
12
+
13
+ def initialize(managed_directories, desired_contents, purge_exclusions = [])
14
+ @managed_directories = managed_directories
15
+ @desired_contents = desired_contents
16
+ @purge_exclusions = purge_exclusions
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -9,6 +9,12 @@ module R10K
9
9
  # {#desired_contents}
10
10
  module Purgeable
11
11
 
12
+ HIDDEN_FILE = /\.[^.]+/
13
+
14
+ FN_MATCH_OPTS = File::FNM_PATHNAME | File::FNM_DOTMATCH
15
+
16
+ # @deprecated
17
+ #
12
18
  # @!method logger
13
19
  # @abstract Including classes must provide a logger method
14
20
  # @return [Log4r::Logger]
@@ -38,23 +44,79 @@ module R10K
38
44
  end
39
45
  end
40
46
 
47
+ # @deprecated Unused helper function
48
+ #
41
49
  # @return [Array<String>] Directory contents that are expected but not present
42
50
  def pending_contents(recurse)
43
51
  desired_contents - current_contents(recurse)
44
52
  end
45
53
 
54
+ def matches?(test, path)
55
+ if test == path
56
+ true
57
+ elsif File.fnmatch?(test, path, FN_MATCH_OPTS)
58
+ true
59
+ else
60
+ false
61
+ end
62
+ end
63
+
64
+ # A method to collect potentially purgeable content without searching into
65
+ # ignored directories when recursively searching.
66
+ #
67
+ # @param dir [String, Pathname] The directory to search for purgeable content
68
+ # @param exclusion_gobs [Array<String>] A list of file paths or File globs
69
+ # to exclude from recursion (These are generated by the classes that
70
+ # mix this module into them and are typically programatically generated)
71
+ # @param allowed_gobs [Array<String>] A list of file paths or File globs to exclude
72
+ # from recursion (These are passed in by the caller of purge! and typically
73
+ # are user supplied configuration values)
74
+ # @param desireds_not_to_recurse_into [Array<String>] A list of file paths not to
75
+ # recurse into. These are programatically generated, these exist to maintain
76
+ # backwards compatibility with previous implementations that used File.globs
77
+ # for "recursion", ie "**/{*,.[^.]*}" which would not recurse into dot directories.
78
+ # @param recurse [Boolean] Whether or not to recurse into child directories that do
79
+ # not match other filters.
80
+ #
81
+ # @return [Array<String>] Contents which may be purged.
82
+ def potentially_purgeable(dir, exclusion_globs, allowed_globs, desireds_not_to_recurse_into, recurse)
83
+ children = Pathname.new(dir).children.reject do |path|
84
+ path = path.to_s
85
+
86
+ if exclusion_match = exclusion_globs.find { |exclusion| matches?(exclusion, path) }
87
+ logger.debug2 _("Not purging %{path} due to internal exclusion match: %{exclusion_match}") % {path: path, exclusion_match: exclusion_match}
88
+ elsif allowlist_match = allowed_globs.find { |allowed| matches?(allowed, path) }
89
+ logger.debug _("Not purging %{path} due to whitelist match: %{allowlist_match}") % {path: path, allowlist_match: allowlist_match}
90
+ else
91
+ desired_match = desireds_not_to_recurse_into.grep(path).first
92
+ end
93
+
94
+ !!exclusion_match || !!allowlist_match || !!desired_match
95
+ end
96
+
97
+ children.flat_map do |child|
98
+ if File.directory?(child) && recurse
99
+ potentially_purgeable(child, exclusion_globs, allowed_globs, desireds_not_to_recurse_into, recurse)
100
+ else
101
+ child.to_s
102
+ end
103
+ end
104
+ end
105
+
46
106
  # @return [Array<String>] Directory contents that are present but not expected
47
107
  def stale_contents(recurse, exclusions, whitelist)
48
- fn_match_opts = File::FNM_PATHNAME | File::FNM_DOTMATCH
108
+ dirs = self.managed_directories
109
+ desireds = self.desired_contents
110
+ hidden_desireds, regular_desireds = desireds.partition do |desired|
111
+ HIDDEN_FILE.match(File.basename(desired))
112
+ end
49
113
 
50
- (current_contents(recurse) - desired_contents).reject do |item|
51
- if exclusion_match = exclusions.find { |ex_item| (ex_item == item) || File.fnmatch?(ex_item, item, fn_match_opts) }
52
- logger.debug2 _("Not purging %{item} due to internal exclusion match: %{exclusion_match}") % {item: item, exclusion_match: exclusion_match}
53
- elsif whitelist_match = whitelist.find { |wl_item| (wl_item == item) || File.fnmatch?(wl_item, item, fn_match_opts) }
54
- logger.debug _("Not purging %{item} due to whitelist match: %{whitelist_match}") % {item: item, whitelist_match: whitelist_match}
55
- end
114
+ initial_purgelist = dirs.flat_map do |dir|
115
+ potentially_purgeable(dir, exclusions, whitelist, hidden_desireds, recurse)
116
+ end
56
117
 
57
- !!exclusion_match || !!whitelist_match
118
+ initial_purgelist.reject do |path|
119
+ regular_desireds.any? { |desired| matches?(desired, path) }
58
120
  end
59
121
  end
60
122
 
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.9.0'
5
+ VERSION = '3.10.0'
6
6
  end
data/locales/r10k.pot CHANGED
@@ -6,11 +6,11 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: r10k 3.4.1-151-g93d38cb\n"
9
+ "Project-Id-Version: r10k 3.9.3-10-gfedc81a\n"
10
10
  "\n"
11
11
  "Report-Msgid-Bugs-To: docs@puppetlabs.com\n"
12
- "POT-Creation-Date: 2021-03-15 17:00+0000\n"
13
- "PO-Revision-Date: 2021-03-15 17:00+0000\n"
12
+ "POT-Creation-Date: 2021-07-07 21:13+0000\n"
13
+ "PO-Revision-Date: 2021-07-07 21:13+0000\n"
14
14
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
15
15
  "Language-Team: LANGUAGE <LL@li.org>\n"
16
16
  "Language: \n"
@@ -31,58 +31,38 @@ msgstr ""
31
31
  msgid "Reason: %{write_lock}"
32
32
  msgstr ""
33
33
 
34
- #: ../lib/r10k/action/deploy/environment.rb:57
34
+ #: ../lib/r10k/action/deploy/environment.rb:112
35
35
  msgid "Environment(s) \\'%{environments}\\' cannot be found in any source and will not be deployed."
36
36
  msgstr ""
37
37
 
38
- #: ../lib/r10k/action/deploy/environment.rb:85
38
+ #: ../lib/r10k/action/deploy/environment.rb:145
39
39
  msgid "Environment %{env_dir} does not match environment name filter, skipping"
40
40
  msgstr ""
41
41
 
42
- #: ../lib/r10k/action/deploy/environment.rb:93
42
+ #: ../lib/r10k/action/deploy/environment.rb:153
43
43
  msgid "Deploying environment %{env_path}"
44
44
  msgstr ""
45
45
 
46
- #: ../lib/r10k/action/deploy/environment.rb:96
46
+ #: ../lib/r10k/action/deploy/environment.rb:156
47
47
  msgid "Environment %{env_dir} is now at %{env_signature}"
48
48
  msgstr ""
49
49
 
50
- #: ../lib/r10k/action/deploy/environment.rb:100
50
+ #: ../lib/r10k/action/deploy/environment.rb:160
51
51
  msgid "Environment %{env_dir} is new, updating all modules"
52
52
  msgstr ""
53
53
 
54
- #: ../lib/r10k/action/deploy/environment.rb:143
55
- msgid "Deploying %{origin} content %{path}"
54
+ #: ../lib/r10k/action/deploy/module.rb:81
55
+ msgid "Only updating modules in environment(s) %{opt_env} skipping environment %{env_path}"
56
56
  msgstr ""
57
57
 
58
- #: ../lib/r10k/action/deploy/module.rb:49
59
- msgid "Only updating modules in environment %{opt_env} skipping environment %{env_path}"
60
- msgstr ""
61
-
62
- #: ../lib/r10k/action/deploy/module.rb:51
58
+ #: ../lib/r10k/action/deploy/module.rb:83
63
59
  msgid "Updating modules %{modules} in environment %{env_path}"
64
60
  msgstr ""
65
61
 
66
- #: ../lib/r10k/action/deploy/module.rb:63
67
- msgid "Deploying module %{mod_path}"
68
- msgstr ""
69
-
70
- #: ../lib/r10k/action/deploy/module.rb:70
71
- msgid "Only updating modules %{modules}, skipping module %{mod_name}"
72
- msgstr ""
73
-
74
- #: ../lib/r10k/action/puppetfile/check.rb:14
62
+ #: ../lib/r10k/action/puppetfile/check.rb:16
75
63
  msgid "Syntax OK"
76
64
  msgstr ""
77
65
 
78
- #: ../lib/r10k/action/puppetfile/install.rb:30
79
- msgid "Updating module %{mod_path}"
80
- msgstr ""
81
-
82
- #: ../lib/r10k/action/puppetfile/install.rb:33
83
- msgid "Cannot track control repo branch for content '%{name}' when not part of a 'deploy' action, will use default if available."
84
- msgstr ""
85
-
86
66
  #: ../lib/r10k/action/runner.rb:54 ../lib/r10k/deployment/config.rb:42
87
67
  msgid "Overriding config file setting '%{key}': '%{old_val}' -> '%{new_val}'"
88
68
  msgstr ""
@@ -95,6 +75,18 @@ msgstr ""
95
75
  msgid "No config file explicitly given and no default config file could be found, default settings will be used."
96
76
  msgstr ""
97
77
 
78
+ #: ../lib/r10k/content_synchronizer.rb:27
79
+ msgid "Updating modules with %{pool_size} threads"
80
+ msgstr ""
81
+
82
+ #: ../lib/r10k/content_synchronizer.rb:37
83
+ msgid "Error during concurrent deploy of a module: %{message}"
84
+ msgstr ""
85
+
86
+ #: ../lib/r10k/content_synchronizer.rb:75
87
+ msgid "Module thread %{id} exiting: %{message}"
88
+ msgstr ""
89
+
98
90
  #: ../lib/r10k/deployment.rb:90
99
91
  msgid "Environment collision at %{env_path} between %{source}:%{env_name} and %{osource}:%{oenv_name}"
100
92
  msgstr ""
@@ -103,7 +95,7 @@ msgstr ""
103
95
  msgid "Unable to load sources; the supplied configuration does not define the 'sources' key"
104
96
  msgstr ""
105
97
 
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
98
+ #: ../lib/r10k/environment/base.rb:68 ../lib/r10k/environment/base.rb:84 ../lib/r10k/environment/base.rb:93 ../lib/r10k/source/base.rb:83
107
99
  msgid "%{class} has not implemented method %{method}"
108
100
  msgstr ""
109
101
 
@@ -111,15 +103,15 @@ msgstr ""
111
103
  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
104
  msgstr ""
113
105
 
114
- #: ../lib/r10k/environment/with_modules.rb:60
106
+ #: ../lib/r10k/environment/with_modules.rb:57
115
107
  msgid "Environment and %{src} both define the \"%{name}\" module"
116
108
  msgstr ""
117
109
 
118
- #: ../lib/r10k/environment/with_modules.rb:61
110
+ #: ../lib/r10k/environment/with_modules.rb:58
119
111
  msgid "#{msg_error}. The %{src} definition will be ignored"
120
112
  msgstr ""
121
113
 
122
- #: ../lib/r10k/environment/with_modules.rb:71
114
+ #: ../lib/r10k/environment/with_modules.rb:68
123
115
  msgid "Unexpected value for `module_conflicts` setting in %{env} environment: %{val}"
124
116
  msgstr ""
125
117
 
@@ -327,19 +319,35 @@ msgstr ""
327
319
  msgid "Module %{name} with args %{args} doesn't have an implementation. (Are you using the right arguments?)"
328
320
  msgstr ""
329
321
 
330
- #: ../lib/r10k/module/base.rb:118
322
+ #: ../lib/r10k/module/base.rb:75
323
+ msgid "Deploying module to %{path}"
324
+ msgstr ""
325
+
326
+ #: ../lib/r10k/module/base.rb:78
327
+ msgid "Only updating modules %{modules}, skipping module %{name}"
328
+ msgstr ""
329
+
330
+ #: ../lib/r10k/module/base.rb:134
331
331
  msgid "Module name (%{title}) must match either 'modulename' or 'owner/modulename'"
332
332
  msgstr ""
333
333
 
334
- #: ../lib/r10k/module/forge.rb:81 ../lib/r10k/module/forge.rb:110
334
+ #: ../lib/r10k/module/forge.rb:89
335
+ msgid "The module %{title} does not appear to have any published releases, cannot determine latest version."
336
+ msgstr ""
337
+
338
+ #: ../lib/r10k/module/forge.rb:92 ../lib/r10k/module/forge.rb:121
335
339
  msgid "The module %{title} does not exist on %{url}."
336
340
  msgstr ""
337
341
 
338
- #: ../lib/r10k/module/forge.rb:185
342
+ #: ../lib/r10k/module/forge.rb:196
339
343
  msgid "Forge module names must match 'owner/modulename', instead got #{title}"
340
344
  msgstr ""
341
345
 
342
- #: ../lib/r10k/module/local.rb:34
346
+ #: ../lib/r10k/module/git.rb:66
347
+ msgid "Cannot track control repo branch for content '%{name}' when not part of a git-backed environment, will use default if available."
348
+ msgstr ""
349
+
350
+ #: ../lib/r10k/module/local.rb:35
343
351
  msgid "Module %{title} is a local module, always indicating synced."
344
352
  msgstr ""
345
353
 
@@ -347,39 +355,27 @@ msgstr ""
347
355
  msgid "Could not read metadata.json"
348
356
  msgstr ""
349
357
 
350
- #: ../lib/r10k/puppetfile.rb:57
358
+ #: ../lib/r10k/puppetfile.rb:73
351
359
  msgid "Using Puppetfile '%{puppetfile}'"
352
360
  msgstr ""
353
361
 
354
- #: ../lib/r10k/puppetfile.rb:71
362
+ #: ../lib/r10k/puppetfile.rb:87
355
363
  msgid "Puppetfile %{path} missing or unreadable"
356
364
  msgstr ""
357
365
 
358
- #: ../lib/r10k/puppetfile.rb:84
366
+ #: ../lib/r10k/puppetfile.rb:100
359
367
  msgid "Failed to evaluate %{path}"
360
368
  msgstr ""
361
369
 
362
- #: ../lib/r10k/puppetfile.rb:98
370
+ #: ../lib/r10k/puppetfile.rb:114
363
371
  msgid "Puppetfiles cannot contain duplicate module names."
364
372
  msgstr ""
365
373
 
366
- #: ../lib/r10k/puppetfile.rb:100
374
+ #: ../lib/r10k/puppetfile.rb:116
367
375
  msgid "Remove the duplicates of the following modules: %{dupes}"
368
376
  msgstr ""
369
377
 
370
- #: ../lib/r10k/puppetfile.rb:201
371
- msgid "Updating modules with %{pool_size} threads"
372
- msgstr ""
373
-
374
- #: ../lib/r10k/puppetfile.rb:212
375
- msgid "Error during concurrent deploy of a module: %{message}"
376
- msgstr ""
377
-
378
- #: ../lib/r10k/puppetfile.rb:241
379
- msgid "Module thread %{id} exiting: %{message}"
380
- msgstr ""
381
-
382
- #: ../lib/r10k/puppetfile.rb:300
378
+ #: ../lib/r10k/puppetfile.rb:285
383
379
  msgid "unrecognized declaration '%{method}'"
384
380
  msgstr ""
385
381
 
@@ -462,27 +458,27 @@ msgid ""
462
458
  "Returned: %{data}"
463
459
  msgstr ""
464
460
 
465
- #: ../lib/r10k/source/git.rb:77
461
+ #: ../lib/r10k/source/git.rb:75
466
462
  msgid "Fetching '%{remote}' to determine current branches."
467
463
  msgstr ""
468
464
 
469
- #: ../lib/r10k/source/git.rb:80
465
+ #: ../lib/r10k/source/git.rb:78
470
466
  msgid "Unable to determine current branches for Git source '%{name}' (%{basedir})"
471
467
  msgstr ""
472
468
 
473
- #: ../lib/r10k/source/git.rb:105
469
+ #: ../lib/r10k/source/git.rb:113
474
470
  msgid "Environment %{env_name} contained non-word characters, correcting name to %{corrected_env_name}"
475
471
  msgstr ""
476
472
 
477
- #: ../lib/r10k/source/git.rb:109
473
+ #: ../lib/r10k/source/git.rb:122
478
474
  msgid "Environment %{env_name} contained non-word characters, ignoring it."
479
475
  msgstr ""
480
476
 
481
- #: ../lib/r10k/source/git.rb:128 ../lib/r10k/source/svn.rb:113
477
+ #: ../lib/r10k/source/git.rb:141 ../lib/r10k/source/svn.rb:115
482
478
  msgid "Branch %{branch} filtered out by ignore_branch_prefixes %{ibp}"
483
479
  msgstr ""
484
480
 
485
- #: ../lib/r10k/source/git.rb:139
481
+ #: ../lib/r10k/source/git.rb:152
486
482
  msgid "Branch `%{name}:%{branch}` filtered out by filter_command %{cmd}"
487
483
  msgstr ""
488
484
 
@@ -526,23 +522,23 @@ msgstr ""
526
522
  msgid "pe_license feature is not available, PE only Puppet modules will not be downloadable."
527
523
  msgstr ""
528
524
 
529
- #: ../lib/r10k/util/purgeable.rb:52
530
- msgid "Not purging %{item} due to internal exclusion match: %{exclusion_match}"
525
+ #: ../lib/r10k/util/purgeable.rb:87
526
+ msgid "Not purging %{path} due to internal exclusion match: %{exclusion_match}"
531
527
  msgstr ""
532
528
 
533
- #: ../lib/r10k/util/purgeable.rb:54
534
- msgid "Not purging %{item} due to whitelist match: %{whitelist_match}"
529
+ #: ../lib/r10k/util/purgeable.rb:89
530
+ msgid "Not purging %{path} due to whitelist match: %{allowlist_match}"
535
531
  msgstr ""
536
532
 
537
- #: ../lib/r10k/util/purgeable.rb:71
533
+ #: ../lib/r10k/util/purgeable.rb:133
538
534
  msgid "No unmanaged contents in %{managed_dirs}, nothing to purge"
539
535
  msgstr ""
540
536
 
541
- #: ../lib/r10k/util/purgeable.rb:76
537
+ #: ../lib/r10k/util/purgeable.rb:138
542
538
  msgid "Removing unmanaged path %{path}"
543
539
  msgstr ""
544
540
 
545
- #: ../lib/r10k/util/purgeable.rb:81
541
+ #: ../lib/r10k/util/purgeable.rb:143
546
542
  msgid "Unable to remove unmanaged path: %{path}"
547
543
  msgstr ""
548
544