class BoxGrinder::AugeasHelper

Public Class Methods

new(guestfs, guestfs_helper, options = {}) click to toggle source
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 23
def initialize(guestfs, guestfs_helper, options = {})
  @guestfs        = guestfs
  @guestfs_helper = guestfs_helper
  @log            = options[:log] || LogHelper.new

  @files = {}
end

Public Instance Methods

edit(&block) click to toggle source
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 31
def edit(&block)
  @log.debug "Changing configuration files using augeas..."

  instance_eval &block if block

  if @files.empty?
    @log.debug "No files specified to change, skipping..."
    return
  end

  if @guestfs.debug("help", []).include?('core_pattern')
    @log.trace "Enabling coredump catching for augeas..."
    @guestfs.debug("core_pattern", ["/sysroot/core"])
  end

  @guestfs.aug_init("/", 32)

  unload = []

  @files.keys.sort.each do |file_name|
    unload << ". != '#{file_name}'"
  end

  @guestfs.aug_rm("/augeas/load//incl[#{unload.join(' and ')}]")
  @guestfs.aug_load

  @files.each do |file, changes|
    changes.each do |key, value|

      @guestfs.aug_set("/files#{file}/#{key}", value)
    end
  end

  @guestfs.aug_save
  @guestfs.aug_close

  @log.debug "Augeas changes saved."
end
set(name, key, value) click to toggle source
# File lib/boxgrinder-build/helpers/augeas-helper.rb, line 70
def set(name, key, value)
  unless @guestfs.exists(name) != 0
    @log.debug "File '#{name}' doesn't exists, skipping augeas changes..."
    return
  end

  @files[name] = {} unless @files.has_key?(name)
  @files[name][key] = value
end