@!attribute [r] repo
@api private @return [R10K::Git::StatefulRepository]
# File lib/r10k/module/git.rb, line 10 def self.implement?(name, args) args.is_a? Hash and args.has_key?(:git) rescue false end
# File lib/r10k/module/git.rb, line 21 def initialize(title, dirname, args, environment=nil) super parse_options(@args) @repo = R10K::Git::StatefulRepository.new(@remote, @dirname, @name) end
# File lib/r10k/module/git.rb, line 33 def properties { :expected => version, :actual => (@repo.head || "(unresolvable)"), :type => :git, } end
# File lib/r10k/module/git.rb, line 46 def status @repo.status(version) end
# File lib/r10k/module/git.rb, line 41 def sync(opts={}) force = opts && opts.fetch(:force, true) @repo.sync(version, force) end
# File lib/r10k/module/git.rb, line 29 def version validate_ref(@desired_ref, @default_ref) end
# File lib/r10k/module/git.rb, line 66 def parse_options(options) ref_opts = [:branch, :tag, :commit, :ref] known_opts = [:git, :default_branch] + ref_opts unhandled = options.keys - known_opts unless unhandled.empty? raise ArgumentError, _("Unhandled options %{unhandled} specified for %{class}") % {unhandled: unhandled, class: self.class} end @remote = options[:git] @desired_ref = ref_opts.find { |key| break options[key] if options.has_key?(key) } || 'master' @default_ref = options[:default_branch] if @desired_ref == :control_branch if @environment && @environment.respond_to?(:ref) @desired_ref = @environment.ref else raise ArgumentError, _("Cannot track control repo branch from Puppetfile in this context: environment is nil or did not provide a valid ref") end end end
# File lib/r10k/module/git.rb, line 52 def validate_ref(desired, default) if desired && @repo.resolve(desired) return desired elsif default && @repo.resolve(default) return default else if default raise ArgumentError, _("Unable to manage Puppetfile content '%{name}': Could not resolve desired ref '%{desired}' or default ref '%{default}'") % {name: @name, desired: desired, default: default} else raise ArgumentError, _("Unable to manage Puppetfile content '%{name}': Could not resolve desired ref '%{desired}' and no default given") % {name: @name, desired: desired} end end end