Sha256: 1a81ac1978b25f8e6e14ef21842661b6888ba391c8e3ef6bf5dfbb4589ff60ef
Contents?: true
Size: 1.8 KB
Versions: 3
Compression:
Stored size: 1.8 KB
Contents
require 'r10k/module' require 'r10k/git' class R10K::Module::Git < R10K::Module::Base R10K::Module.register(self) def self.implement?(name, args) args.is_a? Hash and args.has_key?(:git) rescue false end # @!attribute [r] working_dir # @api private # @return [R10K::Git::WorkingDir] attr_reader :working_dir def initialize(title, dirname, args) super parse_options(@args) @working_dir = R10K::Git::WorkingDir.new(@ref, @remote, @dirname, @name) end def version @ref end def properties { :expected => @ref, :actual => (@working_dir.current.sha1 rescue "(unresolvable)"), :type => :git, } end def sync case status when :absent install when :mismatched uninstall install when :outdated @working_dir.sync end end def status if not @working_dir.exist? return :absent elsif not @working_dir.git? return :mismatched elsif not @remote == @working_dir.remote return :mismatched end if @working_dir.outdated? return :outdated end return :insync end private def install @working_dir.sync end def uninstall @path.rmtree end def parse_options(options) @remote = options.delete(:git) if options[:branch] @ref = R10K::Git::Head.new(options.delete(:branch)) end if options[:tag] @ref = R10K::Git::Tag.new(options.delete(:tag)) end if options[:commit] @ref = R10K::Git::Commit.new(options.delete(:commit)) end if options[:ref] @ref = R10K::Git::Ref.new(options.delete(:ref)) end @ref ||= R10K::Git::Ref.new('master') unless options.empty? raise ArgumentError, "Unhandled options #{options.keys.inspect} specified for #{self.class}" end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
r10k-1.4.2 | lib/r10k/module/git.rb |
r10k-1.4.1 | lib/r10k/module/git.rb |
r10k-1.4.0 | lib/r10k/module/git.rb |