Class: R10K::Source::Git
- Includes:
- Logging
- Defined in:
- lib/r10k/source/git.rb
Overview
This class implements a source for Git environments.
A Git source generates environments by locally caching the given Git repository and enumerating the branches for the Git repository. Branches are mapped to environments without modification.
Constant Summary
Constants included from Logging
Instance Attribute Summary collapse
- #cache ⇒ Object readonly
- #invalid_branches ⇒ Object readonly
- #remote ⇒ Object readonly
- #settings ⇒ Object readonly
Attributes inherited from Base
Instance Method Summary collapse
-
#desired_contents ⇒ Array<String>
List all environments that should exist in the basedir for this source.
-
#environments ⇒ Array<R10K::Environment::Git>
Load the git remote and create environments for each branch.
- #generate_environments ⇒ Object
-
#initialize(name, basedir, options = {}) ⇒ Git
constructor
Initialize the given source.
-
#preload! ⇒ void
(also: #fetch_remote)
Update the git cache for this git source to get the latest list of environments.
Methods included from Logging
debug_formatter, default_formatter, default_outputter, #logger, #logger_name, parse_level
Methods inherited from Base
Constructor Details
#initialize(name, basedir, options = {}) ⇒ Git
Initialize the given source.
51 52 53 54 55 56 57 58 59 60 |
# File 'lib/r10k/source/git.rb', line 51 def initialize(name, basedir, = {}) super @environments = [] @remote = [:remote] @invalid_branches = ([:invalid_branches] || 'correct_and_warn') @cache = R10K::Git.cache.generate(@remote) end |
Instance Attribute Details
#cache ⇒ Object (readonly)
27 28 29 |
# File 'lib/r10k/source/git.rb', line 27 def cache @cache end |
#invalid_branches ⇒ Object (readonly)
37 38 39 |
# File 'lib/r10k/source/git.rb', line 37 def invalid_branches @invalid_branches end |
#remote ⇒ Object (readonly)
22 23 24 |
# File 'lib/r10k/source/git.rb', line 22 def remote @remote end |
#settings ⇒ Object (readonly)
32 33 34 |
# File 'lib/r10k/source/git.rb', line 32 def settings @settings end |
Instance Method Details
#desired_contents ⇒ Array<String>
This is required by Util::Basedir
List all environments that should exist in the basedir for this source
108 109 110 |
# File 'lib/r10k/source/git.rb', line 108 def desired_contents environments.map {|env| env.dirname } end |
#environments ⇒ Array<R10K::Environment::Git>
Load the git remote and create environments for each branch. If the cache has not been fetched, this will return an empty list.
77 78 79 80 81 82 83 84 85 |
# File 'lib/r10k/source/git.rb', line 77 def environments if not @cache.cached? [] elsif @environments.empty? @environments = generate_environments() else @environments end end |
#generate_environments ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/r10k/source/git.rb', line 87 def generate_environments envs = [] branch_names.each do |bn| if bn.valid? envs << R10K::Environment::Git.new(bn.name, @basedir, bn.dirname, {:remote => remote, :ref => bn.name}) elsif bn.correct? logger.warn "Environment #{bn.name.inspect} contained non-word characters, correcting name to #{bn.dirname}" envs << R10K::Environment::Git.new(bn.name, @basedir, bn.dirname, {:remote => remote, :ref => bn.name}) elsif bn.validate? logger.error "Environment #{bn.name.inspect} contained non-word characters, ignoring it." end end envs end |
#preload! ⇒ void Also known as: fetch_remote
This method returns an undefined value.
Update the git cache for this git source to get the latest list of environments.
65 66 67 68 69 70 |
# File 'lib/r10k/source/git.rb', line 65 def preload! logger.debug "Fetching '#{@remote}' to determine current branches." @cache.sync rescue => e raise R10K::Error.wrap(e, "Unable to determine current branches for Git source '#{@name}' (#{@basedir})") end |