class R10KHelper

Attributes

basedir[RW]
modules[RW]
puppetfile[RW]

Public Class Methods

new(puppetfile) click to toggle source
# File lib/simp/rake/build/deps.rb, line 67
def initialize(puppetfile)
  @modules = []
  @basedir = File.dirname(File.expand_path(puppetfile))

  Dir.chdir(@basedir) do

    R10K::Git::Cache.settings[:cache_root] = File.join(@basedir,'.r10k_cache')

    unless File.directory?(R10K::Git::Cache.settings[:cache_root])
      FileUtils.mkdir_p(R10K::Git::Cache.settings[:cache_root])
    end

    r10k = R10K::Puppetfile.new(Dir.pwd, nil, puppetfile)
    r10k.load!

    @modules = r10k.modules.collect do |mod|
      mod_status = mod.repo.repo.dirty?

      mod = {
        :name        => mod.name,
        :path        => mod.path.to_s,
        :remote      => mod.repo.instance_variable_get('@remote'),
        :desired_ref => mod.desired_ref,
        :git_source  => mod.repo.repo.origin,
        :git_ref     => mod.repo.head,
        :module_dir  => mod.basedir,
        :status      => mod_status ? mod_status : :known,
        :r10k_module => mod,
        :r10k_cache  => mod.repo.repo.cache_repo
      }
    end
  end

  module_dirs = @modules.collect do |mod|
    mod = mod[:module_dir]
  end

  module_dirs.uniq!

  module_dirs.each do |module_dir|
    known_modules = @modules.select do |mod|
      mod[:module_dir] == module_dir
    end

    known_modules.map! do |mod|
      mod = mod[:name]
    end

    current_modules = Dir.glob(File.join(module_dir,'*')).map do |mod|
      mod = File.basename(mod)
    end

    (current_modules - known_modules).each do |mod|
      # Did we find random git repos in our module spaces?
      if File.exist?(File.join(module_dir, mod, '.git'))
        @modules << {
          :name        => mod,
          :path        => File.join(module_dir, mod),
          :module_dir  => module_dir,
          :status      => :unknown,
        }
      end
    end
  end
end

Public Instance Methods

each_module(&block) click to toggle source
# File lib/simp/rake/build/deps.rb, line 157
def each_module(&block)
  Dir.chdir(@basedir) do
    @modules.each do |mod|
      # This works for Puppet Modules

      block.call(mod)
    end
  end
end
unknown_modules() click to toggle source
# File lib/simp/rake/build/deps.rb, line 167
def unknown_modules
  @modules.select do |mod|
    mod[:status] == :unknown
  end.map do |mod|
    mod = mod[:name]
  end
end