class PuppetPal::Pal
Constants
- DEFAULT_GIT_MODE
- MODULE_DIR
- PAL_WORKING_DIR
Public Class Methods
new(puppet_file_name)
click to toggle source
# File lib/puppet_pal/pal.rb, line 9 def initialize(puppet_file_name) @repositories={git: {}} @puppet_file_name = File.expand_path(puppet_file_name) @base_dir = File.dirname(@puppet_file_name) @work_dir = File.join(@base_dir, PAL_WORKING_DIR) @module_dir = File.join(@base_dir, MODULE_DIR) @git_mode = DEFAULT_GIT_MODE end
Public Instance Methods
copy_module(name, source_path, branch='master')
click to toggle source
# File lib/puppet_pal/pal.rb, line 42 def copy_module(name, source_path, branch='master') current_branch = `cd #{source_path} && env -u GIT_DIR git symbolic-ref --short HEAD`.strip if current_branch != branch success = system("cd #{source_path} && env -u GIT_DIR git checkout #{branch}") raise "git checkout failed" unless success end target = File.join(@module_dir,name) FileUtils.rm_rf(target) FileUtils.cp_r(source_path, target, preserve: true) end
forge(name)
click to toggle source
# File lib/puppet_pal/pal.rb, line 60 def forge(name) @forge = name # This is unused right now, until I figure out what it does in librarian-puppet end
mod(name, options={})
click to toggle source
# File lib/puppet_pal/pal.rb, line 64 def mod(name, options={}) puts "Processing module: #{name}" if options[:git] working_dir = pull_repo(options[:git], :git ) path = options[:path] || "" copy_module(name, File.join(working_dir, path), options[:branch] || 'master') else # Assume we are pulling from puppet forge pull_from_puppetforge(name) end end
pull_from_puppetforge(name)
click to toggle source
# File lib/puppet_pal/pal.rb, line 53 def pull_from_puppetforge(name) target = File.join(@module_dir,name.split("/").last) FileUtils.rm_rf(target) success = system("puppet module install --target-dir #{@module_dir} #{name}") raise "Unable to pull from puppet forge. Verify that puppet is installed and that module name is correct" unless success end
pull_repo(name, type = :git)
click to toggle source
# File lib/puppet_pal/pal.rb, line 28 def pull_repo(name, type = :git) # git is only supprted type right now working_dir = repo_dirname(name, type) unless @repositories[type][name] @repositories[type][name] = working_dir if @git_mode == :reclone FileUtils.rm_rf(working_dir) # Clear it out success = system("git clone #{name} #{working_dir}") raise "git clone failed" unless success end end working_dir end
repo_dirname(name, type)
click to toggle source
# File lib/puppet_pal/pal.rb, line 24 def repo_dirname(name, type) File.join(@work_dir, type.to_s, name.gsub("/","-")) end
run()
click to toggle source
# File lib/puppet_pal/pal.rb, line 18 def run FileUtils.mkdir_p(@work_dir) FileUtils.mkdir_p(@module_dir) self.instance_eval(File.read(@puppet_file_name)) end