r10k 3.13.0 → 3.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docker.yml +1 -1
  3. data/.github/workflows/rspec_tests.yml +2 -2
  4. data/.travis.yml +1 -1
  5. data/CHANGELOG.mkd +10 -0
  6. data/doc/dynamic-environments/configuration.mkd +24 -0
  7. data/doc/puppetfile.mkd +13 -0
  8. data/lib/r10k/environment/name.rb +14 -9
  9. data/lib/r10k/environment/tarball.rb +78 -0
  10. data/lib/r10k/environment.rb +1 -0
  11. data/lib/r10k/forge/module_release.rb +2 -1
  12. data/lib/r10k/git/cache.rb +4 -13
  13. data/lib/r10k/git/rugged/base_repository.rb +12 -1
  14. data/lib/r10k/git/rugged/cache.rb +8 -0
  15. data/lib/r10k/git/stateful_repository.rb +2 -0
  16. data/lib/r10k/initializers.rb +10 -0
  17. data/lib/r10k/module/tarball.rb +101 -0
  18. data/lib/r10k/module.rb +1 -0
  19. data/lib/r10k/module_loader/puppetfile.rb +10 -1
  20. data/lib/r10k/source/git.rb +18 -18
  21. data/lib/r10k/tarball.rb +183 -0
  22. data/lib/r10k/util/cacheable.rb +31 -0
  23. data/lib/r10k/util/downloader.rb +134 -0
  24. data/lib/r10k/version.rb +1 -1
  25. data/locales/r10k.pot +39 -23
  26. data/r10k.gemspec +2 -2
  27. data/spec/fixtures/tarball/tarball.tar.gz +0 -0
  28. data/spec/integration/git/rugged/cache_spec.rb +33 -0
  29. data/spec/shared-contexts/tarball.rb +32 -0
  30. data/spec/spec_helper.rb +1 -0
  31. data/spec/unit/action/deploy/module_spec.rb +2 -2
  32. data/spec/unit/environment/name_spec.rb +18 -0
  33. data/spec/unit/environment/tarball_spec.rb +45 -0
  34. data/spec/unit/git/cache_spec.rb +2 -15
  35. data/spec/unit/git/rugged/cache_spec.rb +19 -0
  36. data/spec/unit/module/tarball_spec.rb +70 -0
  37. data/spec/unit/module_loader/puppetfile_spec.rb +4 -1
  38. data/spec/unit/tarball_spec.rb +57 -0
  39. data/spec/unit/util/cacheable_spec.rb +23 -0
  40. data/spec/unit/util/downloader_spec.rb +98 -0
  41. metadata +29 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 13a5d7be1f8e4f5794ad944ef12cfbe32d6a7e704371e8f8137227507857600a
4
- data.tar.gz: a9060539b639c566371a1c23c28d19910d63649dedeca67ab4b9237d0a43bfab
3
+ metadata.gz: da22a28bcd5de19a996ff2c869ba074c402e393d7a3caa2528bb342c75192234
4
+ data.tar.gz: 9bf7067d8412b9d158f2d47ad96499f90183c5dcade26b97fede2a344b06dca0
5
5
  SHA512:
6
- metadata.gz: aa2a7a28f9d30468bd17d6e54b4e6202a3290779391efe95409a16648f2eb81a5dd7483964b9c7d3bad8fafbb808fa99a86b6a7c2c0cdac5a5f1d5140e20efd0
7
- data.tar.gz: 1ee18ff19d30c76a6f00a9650eff77ccf0cae1f60c789a5ae8c90fd725a8c4197f587d4bc1d6a6288b8452ba1c3db07cdfa30030d7fad7e130639283b5f56722
6
+ metadata.gz: a2a529ce1b781f858253f1d929e4cf521806a8f11ce9733a4f2dc92dcfd4792d4afcbad9290a814d10a14be645eb0ada9551c542def43f6acc48d28931783bc2
7
+ data.tar.gz: 31d2a9e5d85f29da1c6f62d77d7bbd83c7ed8c4687bb5035f7185c8b37042e2707e59b623d6603af5d533ee79c44380d4a3a4a1a2a28ddd06af9c723c6f1c1bb
@@ -3,7 +3,7 @@ name: Docker test and publish
3
3
  on:
4
4
  push:
5
5
  branches:
6
- - master
6
+ - main
7
7
 
8
8
  jobs:
9
9
  build-and-publish:
@@ -59,7 +59,7 @@ jobs:
59
59
  bundle --version
60
60
 
61
61
  # Run tests
62
- bundle exec rspec --color --format documentation spec/unit
62
+ bundle exec rspec --color --format documentation spec
63
63
 
64
64
  - name: Run tests on Linux
65
65
  if: runner.os == 'Linux'
@@ -78,4 +78,4 @@ jobs:
78
78
  fi
79
79
 
80
80
  # Run tests
81
- bundle exec rspec --color --format documentation spec/unit
81
+ bundle exec rspec --color --format documentation spec
data/.travis.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  language: ruby
3
3
  bundler_args: "--without system"
4
- script: "bundle exec rspec --color --format documentation spec/unit"
4
+ script: "bundle exec rspec --color --format documentation spec"
5
5
  notifications:
6
6
  email: false
7
7
  sudo: false
data/CHANGELOG.mkd CHANGED
@@ -4,6 +4,16 @@ CHANGELOG
4
4
  Unreleased
5
5
  ----------
6
6
 
7
+ 3.14.0
8
+ ------
9
+
10
+ - Record unprocessed environment name, so that `strip_component` does not cause truncated environment names to be used as git branches, resulting in errors or incorrect deploys. [#1240](https://github.com/puppetlabs/r10k/pull/1240)
11
+ - (CODEMGMT-1294) Resync repos with unresolvable refs [#1239](https://github.com/puppetlabs/r10k/pull/1239)
12
+ - (RK-378) Restore access to the environment name from the Puppetfile [#1241](https://github.com/puppetlabs/r10k/pull/1241)
13
+ - (CODEMGMT-1300) Ensure the remote url in rugged cache directories is current [#1245](https://github.com/puppetlabs/r10k/pull/1245)
14
+ - Add support for tarball module type, allowing module content to be packaged and sourced from generic fileservers [#1244](https://github.com/puppetlabs/r10k/pull/1244)
15
+ - Add experimental support for tarball environment type, allowing whole environments to be packaged and sourced from generic fileservers [#1244](https://github.com/puppetlabs/r10k/pull/1244)
16
+
7
17
  3.13.0
8
18
  ------
9
19
 
@@ -796,3 +796,27 @@ development:
796
796
  source: https://github.com/reidmv/reidmv-xampl.git
797
797
  version: 62d07f2
798
798
  ```
799
+
800
+ ### Tarball Environment Type
801
+
802
+ The tarball environment type allows an environment to be deployed from a tarball archive, rather than a Git repository. When using a tarball environment type, a source location for the tarball is required. Optionally, the tarball's sha256 checksum may be specified as the version. It is highly recommended to include a version specifier. If a version specifier is not included, r10k will never invalidate a cached copy of the tarball's source.
803
+
804
+ Tarball environment sources will be unpacked directly into the environment root.
805
+
806
+ ```yaml
807
+ ---
808
+ production:
809
+ type: tarball
810
+ source: https://repo.example.com/projects/puppet/env-2.36.1.tar.gz
811
+ version: 99a906c99c2f144de43f2ae500509a7474ed11c583fb623efa8e5b377a3157f0 # sha256digest
812
+
813
+ development:
814
+ type: tarball
815
+ source: https://repo.example.com/projects/puppet/env-6128ada.tar.gz
816
+ version: 6128ada158622cd90f8e1360fb7c2c3830a812d1ec26ddf0db7eb16d61b7293f # sha256digest
817
+ modules:
818
+ reidmv-xampl:
819
+ type: git
820
+ source: https://github.com/reidmv/reidmv-xampl.git
821
+ version: 62d07f2
822
+ ```
data/doc/puppetfile.mkd CHANGED
@@ -239,6 +239,19 @@ credentials may be visible in the process table when r10k is running. If you
239
239
  choose to supply SVN credentials make sure that the system running r10k is
240
240
  appropriately secured.
241
241
 
242
+ ### Tarball
243
+
244
+ Modules can be installed from tarball archives. A tarball module must specify a source URL to retreive the tarball content from. A tarball module may optionally specify a sha256 checksum as the module version.
245
+
246
+ mod 'puppetlabs-apache',
247
+ type: 'tarball',
248
+ source: 'https://repo.example.com/puppet/modules/puppetlabs-apache-7.0.0.tar.gz',
249
+ version: 'aedd6dc1a5136c6a1a1ec2f285df2a70b0fe4c9effb254b5a1f58116e4c1659e' # sha256 digest
250
+
251
+ If no version is specified, a tarball will be downloaded from the given source and cached. The cache will not be invalidated until the source URL is changed, or a sha256 checksum version is provided.
252
+
253
+ Tarball module content will be unpacked directly into an appropriately named module directory. For example, the puppetlabs-apache-7.0.0.tar.gz archive in the example above will be unpacked into `<environment-dir>/modules/apache/`.
254
+
242
255
  ### Local
243
256
 
244
257
  In the event you want to store locally written modules in your r10k-managed
@@ -6,17 +6,22 @@ module R10K
6
6
  class Name
7
7
 
8
8
  # @!attribute [r] name
9
- # @return [String] The unmodified name of the environment
9
+ # @return [String] The functional name of the environment derived from inputs and options.
10
10
  attr_reader :name
11
11
 
12
+ # @!attribute [r] original_name
13
+ # @return [String] The unmodified name originally given to create the object.
14
+ attr_reader :original_name
15
+
12
16
  INVALID_CHARACTERS = %r[\W]
13
17
 
14
- def initialize(name, opts)
18
+ def initialize(original_name, opts)
15
19
  @source = opts[:source]
16
20
  @prefix = opts[:prefix]
17
21
  @invalid = opts[:invalid]
18
22
 
19
- @name = derive_name(name, opts[:strip_component])
23
+ @name = derive_name(original_name, opts[:strip_component])
24
+ @original_name = original_name
20
25
  @opts = opts
21
26
 
22
27
  case @invalid
@@ -71,8 +76,8 @@ module R10K
71
76
 
72
77
  private
73
78
 
74
- def derive_name(name, strip_component)
75
- return name unless strip_component
79
+ def derive_name(original_name, strip_component)
80
+ return original_name unless strip_component
76
81
 
77
82
  unless strip_component.is_a?(String)
78
83
  raise _('Improper configuration value given for strip_component setting in %{src} source. ' \
@@ -82,11 +87,11 @@ module R10K
82
87
 
83
88
  if %r{^/.*/$}.match(strip_component)
84
89
  regex = Regexp.new(strip_component[1..-2])
85
- name.gsub(regex, '')
86
- elsif name.start_with?(strip_component)
87
- name[strip_component.size..-1]
90
+ original_name.gsub(regex, '')
91
+ elsif original_name.start_with?(strip_component)
92
+ original_name[strip_component.size..-1]
88
93
  else
89
- name
94
+ original_name
90
95
  end
91
96
  end
92
97
 
@@ -0,0 +1,78 @@
1
+ require 'r10k/util/setopts'
2
+ require 'r10k/tarball'
3
+ require 'r10k/environment'
4
+
5
+ class R10K::Environment::Tarball < R10K::Environment::WithModules
6
+
7
+ R10K::Environment.register(:tarball, self)
8
+
9
+ # @!attribute [r] tarball
10
+ # @api private
11
+ # @return [R10K::Tarball]
12
+ attr_reader :tarball
13
+
14
+ include R10K::Util::Setopts
15
+
16
+ # Initialize the given tarball environment.
17
+ #
18
+ # @param name [String] The unique name describing this environment.
19
+ # @param basedir [String] The base directory where this environment will be created.
20
+ # @param dirname [String] The directory name for this environment.
21
+ # @param options [Hash] An additional set of options for this environment.
22
+ #
23
+ # @param options [String] :source Where to get the tarball from
24
+ # @param options [String] :version The sha256 digest of the tarball
25
+ def initialize(name, basedir, dirname, options = {})
26
+ super
27
+ setopts(options, {
28
+ # Standard option interface
29
+ :type => ::R10K::Util::Setopts::Ignore,
30
+ :source => :self,
31
+ :version => :checksum,
32
+
33
+ # Type-specific options
34
+ :checksum => :self,
35
+ })
36
+
37
+ @tarball = R10K::Tarball.new(name, @source, checksum: @checksum)
38
+ end
39
+
40
+ def path
41
+ @path ||= Pathname.new(File.join(@basedir, @dirname))
42
+ end
43
+
44
+ def sync
45
+ tarball.get unless tarball.cache_valid?
46
+ case status
47
+ when :absent, :mismatched
48
+ tarball.unpack(path.to_s)
49
+ # Untracked files left behind from previous extractions are expected to
50
+ # be deleted by r10k's purge facility.
51
+ end
52
+ end
53
+
54
+ def status
55
+ if not path.exist?
56
+ :absent
57
+ elsif not (tarball.cache_valid? && tarball.insync?(path.to_s, ignore_untracked_files: true))
58
+ :mismatched
59
+ else
60
+ :insync
61
+ end
62
+ end
63
+
64
+ def signature
65
+ @checksum || @tarball.cache_checksum
66
+ end
67
+
68
+ include R10K::Util::Purgeable
69
+
70
+ # Returns an array of the full paths to all the content being managed.
71
+ # @note This implements a required method for the Purgeable mixin
72
+ # @return [Array<String>]
73
+ def desired_contents
74
+ desired = []
75
+ desired += @tarball.paths.map { |entry| File.join(@full_path, entry) }
76
+ desired += super
77
+ end
78
+ end
@@ -34,5 +34,6 @@ module R10K
34
34
  require 'r10k/environment/bare'
35
35
  require 'r10k/environment/git'
36
36
  require 'r10k/environment/svn'
37
+ require 'r10k/environment/tarball'
37
38
  end
38
39
  end
@@ -1,5 +1,6 @@
1
1
  require 'r10k/logging'
2
2
  require 'r10k/settings/mixin'
3
+ require 'r10k/util/cacheable'
3
4
  require 'fileutils'
4
5
  require 'tmpdir'
5
6
  require 'puppet_forge'
@@ -13,7 +14,7 @@ module R10K
13
14
 
14
15
  def_setting_attr :proxy
15
16
  def_setting_attr :baseurl
16
- def_setting_attr :cache_root, File.expand_path(ENV['HOME'] ? '~/.r10k/cache': '/root/.r10k/cache')
17
+ def_setting_attr :cache_root, R10K::Util::Cacheable.default_cachedir
17
18
 
18
19
  include R10K::Logging
19
20
 
@@ -3,6 +3,7 @@ require 'r10k/git'
3
3
  require 'r10k/settings'
4
4
  require 'r10k/instance_cache'
5
5
  require 'forwardable'
6
+ require 'r10k/util/cacheable'
6
7
 
7
8
  # Cache Git repository mirrors for object database reuse.
8
9
  #
@@ -15,18 +16,9 @@ require 'forwardable'
15
16
  class R10K::Git::Cache
16
17
 
17
18
  include R10K::Settings::Mixin
19
+ include R10K::Util::Cacheable
18
20
 
19
- #@api private
20
- def self.determine_cache_root
21
- if R10K::Util::Platform.windows?
22
- File.join(ENV['LOCALAPPDATA'], 'r10k', 'git')
23
- else
24
- File.expand_path(ENV['HOME'] ? '~/.r10k/git': '/root/.r10k/git')
25
- end
26
- end
27
- private_class_method :determine_cache_root
28
-
29
- def_setting_attr :cache_root, determine_cache_root
21
+ def_setting_attr :cache_root, R10K::Util::Cacheable.default_cachedir('git')
30
22
 
31
23
  @instance_cache = R10K::InstanceCache.new(self)
32
24
 
@@ -109,8 +101,7 @@ class R10K::Git::Cache
109
101
 
110
102
  alias cached? exist?
111
103
 
112
- # Reformat the remote name into something that can be used as a directory
113
104
  def sanitized_dirname
114
- @sanitized_dirname ||= @remote.gsub(/(\w+:\/\/)(.*)(@)/, '\1').gsub(/[^@\w\.-]/, '-')
105
+ @sanitized_dirname ||= super(@remote)
115
106
  end
116
107
  end
@@ -20,7 +20,8 @@ class R10K::Git::Rugged::BaseRepository
20
20
  else
21
21
  object.oid
22
22
  end
23
- rescue ::Rugged::ReferenceError
23
+ rescue ::Rugged::ReferenceError, ::Rugged::OdbError => e
24
+ logger.debug2(_("Unable to resolve %{pattern}: %{e} ") % {pattern: pattern, e: e })
24
25
  nil
25
26
  end
26
27
 
@@ -60,6 +61,16 @@ class R10K::Git::Rugged::BaseRepository
60
61
  remotes_hash
61
62
  end
62
63
 
64
+ # Update a remote URL
65
+ # @param [String] The remote URL of the git repository
66
+ # @param [String] An optional remote name for the git repository
67
+ def update_remote(remote, remote_name='origin')
68
+ if @_rugged_repo
69
+ logger.debug2(_("Remote URL is different from cache, updating %{orig} to %{update}") % {orig: remotes[remote_name], update: remote})
70
+ @_rugged_repo.remotes.set_url(remote_name, remote)
71
+ end
72
+ end
73
+
63
74
  private
64
75
 
65
76
  def with_repo(opts={})
@@ -8,4 +8,12 @@ class R10K::Git::Rugged::Cache < R10K::Git::Cache
8
8
  def self.bare_repository
9
9
  R10K::Git::Rugged::BareRepository
10
10
  end
11
+
12
+ # Update the remote URL if the cache differs from the current configuration
13
+ def sync!
14
+ if cached? && @repo.remotes['origin'] != @remote
15
+ @repo.update_remote(@remote)
16
+ end
17
+ super
18
+ end
11
19
  end
@@ -86,6 +86,8 @@ class R10K::Git::StatefulRepository
86
86
  :mismatched
87
87
  elsif !(@repo.origin == @remote)
88
88
  :mismatched
89
+ elsif @repo.head.nil?
90
+ :mismatched
89
91
  elsif @repo.dirty?
90
92
  :dirty
91
93
  elsif !(@repo.head == @cache.resolve(ref))
@@ -4,6 +4,7 @@ require 'r10k/git'
4
4
  require 'r10k/git/cache'
5
5
 
6
6
  require 'r10k/forge/module_release'
7
+ require 'r10k/tarball'
7
8
 
8
9
  module R10K
9
10
  module Initializers
@@ -36,10 +37,13 @@ module R10K
36
37
 
37
38
  with_setting(:cachedir) { |value| R10K::Git::Cache.settings[:cache_root] = value }
38
39
  with_setting(:cachedir) { |value| R10K::Forge::ModuleRelease.settings[:cache_root] = value }
40
+ with_setting(:cachedir) { |value| R10K::Tarball.settings[:cache_root] = value }
39
41
  with_setting(:pool_size) { |value| R10K::Puppetfile.settings[:pool_size] = value }
42
+ with_setting(:proxy) { |value| R10K::Tarball.settings[:proxy] = value }
40
43
 
41
44
  with_setting(:git) { |value| GitInitializer.new(value).call }
42
45
  with_setting(:forge) { |value| ForgeInitializer.new(value).call }
46
+ with_setting(:tarball) { |value| TarballInitializer.new(value).call }
43
47
  end
44
48
  end
45
49
 
@@ -79,5 +83,11 @@ module R10K
79
83
  with_setting(:authorization_token) { |value| PuppetForge::Connection.authorization = value }
80
84
  end
81
85
  end
86
+
87
+ class TarballInitializer < BaseInitializer
88
+ def call
89
+ with_setting(:proxy) { |value| R10K::Tarball.settings[:proxy] = value }
90
+ end
91
+ end
82
92
  end
83
93
  end
@@ -0,0 +1,101 @@
1
+ require 'r10k/module'
2
+ require 'r10k/util/setopts'
3
+ require 'r10k/tarball'
4
+
5
+ # This class defines a tarball source module implementation
6
+ class R10K::Module::Tarball < R10K::Module::Base
7
+
8
+ R10K::Module.register(self)
9
+
10
+ def self.implement?(name, args)
11
+ args.is_a?(Hash) && args[:type].to_s == 'tarball'
12
+ rescue
13
+ false
14
+ end
15
+
16
+ def self.statically_defined_version(name, args)
17
+ args[:version] || args[:checksum]
18
+ end
19
+
20
+ # @!attribute [r] tarball
21
+ # @api private
22
+ # @return [R10K::Tarball]
23
+ attr_reader :tarball
24
+
25
+ include R10K::Util::Setopts
26
+
27
+ def initialize(name, dirname, opts, environment=nil)
28
+ super
29
+ setopts(opts, {
30
+ # Standard option interface
31
+ :source => :self,
32
+ :version => :checksum,
33
+ :type => ::R10K::Util::Setopts::Ignore,
34
+ :overrides => :self,
35
+
36
+ # Type-specific options
37
+ :checksum => :self,
38
+ })
39
+
40
+ @tarball = R10K::Tarball.new(name, @source, checksum: @checksum)
41
+ end
42
+
43
+ # Return the status of the currently installed module.
44
+ #
45
+ # @return [Symbol]
46
+ def status
47
+ if not path.exist?
48
+ :absent
49
+ elsif not (tarball.cache_valid? && tarball.insync?(path.to_s))
50
+ :mismatched
51
+ else
52
+ :insync
53
+ end
54
+ end
55
+
56
+ # Synchronize this module with the indicated state.
57
+ # @param [Hash] opts Deprecated
58
+ # @return [Boolean] true if the module was updated, false otherwise
59
+ def sync(opts={})
60
+ tarball.get unless tarball.cache_valid?
61
+ if should_sync?
62
+ case status
63
+ when :absent
64
+ tarball.unpack(path.to_s)
65
+ when :mismatched
66
+ path.rmtree
67
+ tarball.unpack(path.to_s)
68
+ end
69
+ maybe_delete_spec_dir
70
+ true
71
+ else
72
+ false
73
+ end
74
+ end
75
+
76
+ # Return the desired version of this module
77
+ def version
78
+ @checksum || '(present)'
79
+ end
80
+
81
+ # Return the properties of the module
82
+ #
83
+ # @return [Hash]
84
+ # @abstract
85
+ def properties
86
+ {
87
+ :expected => version,
88
+ :actual => ((state = status) == :insync) ? version : state,
89
+ :type => :tarball,
90
+ }
91
+ end
92
+
93
+ # Tarball caches are files, not directories. An important purpose of this
94
+ # method is to indicate where the cache "path" is, for locking/parallelism,
95
+ # so for the Tarball module type, the relevant path location is returned.
96
+ #
97
+ # @return [String] The path this module will cache its tarball source to
98
+ def cachedir
99
+ tarball.cache_path
100
+ end
101
+ end
data/lib/r10k/module.rb CHANGED
@@ -53,4 +53,5 @@ module R10K::Module
53
53
  require 'r10k/module/local'
54
54
  require 'r10k/module/forge'
55
55
  require 'r10k/module/definition'
56
+ require 'r10k/module/tarball'
56
57
  end
@@ -16,7 +16,8 @@ module R10K
16
16
 
17
17
  attr_accessor :default_branch_override, :environment
18
18
  attr_reader :modules, :moduledir, :puppetfile_path,
19
- :managed_directories, :desired_contents, :purge_exclusions
19
+ :managed_directories, :desired_contents, :purge_exclusions,
20
+ :environment_name
20
21
 
21
22
  # @param basedir [String] The path that contains the moduledir &
22
23
  # Puppetfile by default. May be an environment, project, or
@@ -40,6 +41,7 @@ module R10K
40
41
  @puppetfile_path = resolve_path(@basedir, puppetfile)
41
42
  @overrides = overrides
42
43
  @environment = environment
44
+ @environment_name = @environment&.name
43
45
  @default_branch_override = @overrides.dig(:environments, :default_branch_override)
44
46
  @allow_puppetfile_forge = @overrides.dig(:forge, :allow_puppetfile_override)
45
47
 
@@ -165,6 +167,13 @@ module R10K
165
167
  @modules << mod
166
168
  end
167
169
 
170
+ # @deprecated
171
+ # @return [String] The base directory that contains the Puppetfile
172
+ def basedir
173
+ logger.warn _('"basedir" is deprecated. Please use "environment_name" instead. "basedir" will be removed in a future version.')
174
+ @basedir
175
+ end
176
+
168
177
  private
169
178
 
170
179
  def empty_load_output
@@ -100,26 +100,26 @@ class R10K::Source::Git < R10K::Source::Base
100
100
 
101
101
  def generate_environments
102
102
  envs = []
103
- branch_names.each do |bn|
104
- if bn.valid?
105
- envs << R10K::Environment::Git.new(bn.name,
103
+ environment_names.each do |en|
104
+ if en.valid?
105
+ envs << R10K::Environment::Git.new(en.name,
106
106
  @basedir,
107
- bn.dirname,
107
+ en.dirname,
108
108
  {remote: remote,
109
- ref: bn.name,
109
+ ref: en.original_name,
110
110
  puppetfile_name: puppetfile_name,
111
111
  overrides: @options[:overrides]})
112
- elsif bn.correct?
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}
114
- envs << R10K::Environment::Git.new(bn.name,
112
+ elsif en.correct?
113
+ logger.warn _("Environment %{env_name} contained non-word characters, correcting name to %{corrected_env_name}") % {env_name: en.name.inspect, corrected_env_name: en.dirname}
114
+ envs << R10K::Environment::Git.new(en.name,
115
115
  @basedir,
116
- bn.dirname,
116
+ en.dirname,
117
117
  {remote: remote,
118
- ref: bn.name,
118
+ ref: en.original_name,
119
119
  puppetfile_name: puppetfile_name,
120
120
  overrides: @options[:overrides]})
121
- elsif bn.validate?
122
- logger.error _("Environment %{env_name} contained non-word characters, ignoring it.") % {env_name: bn.name.inspect}
121
+ elsif en.validate?
122
+ logger.error _("Environment %{env_name} contained non-word characters, ignoring it.") % {env_name: en.name.inspect}
123
123
  end
124
124
  end
125
125
 
@@ -157,22 +157,22 @@ class R10K::Source::Git < R10K::Source::Base
157
157
 
158
158
  private
159
159
 
160
- def branch_names
160
+ def environment_names
161
161
  opts = {prefix: @prefix,
162
162
  invalid: @invalid_branches,
163
163
  source: @name,
164
164
  strip_component: @strip_component}
165
- branches = @cache.branches
165
+ branch_names = @cache.branches
166
166
  if @ignore_branch_prefixes && !@ignore_branch_prefixes.empty?
167
- branches = filter_branches_by_regexp(branches, @ignore_branch_prefixes)
167
+ branch_names = filter_branches_by_regexp(branch_names, @ignore_branch_prefixes)
168
168
  end
169
169
 
170
170
  if @filter_command && !@filter_command.empty?
171
- branches = filter_branches_by_command(branches, @filter_command)
171
+ branch_names = filter_branches_by_command(branch_names, @filter_command)
172
172
  end
173
173
 
174
- branches.map do |branch|
175
- R10K::Environment::Name.new(branch, opts)
174
+ branch_names.map do |branch_name|
175
+ R10K::Environment::Name.new(branch_name, opts)
176
176
  end
177
177
  end
178
178
  end