Class BoxGrinder::AugeasHelper
In: lib/boxgrinder-build/helpers/augeas-helper.rb
lib/boxgrinder-build/helpers/augeas-helper.rb
Parent: Object

Methods

edit   edit   new   new   set   set  

Public Class methods

[Source]

    # File lib/boxgrinder-build/helpers/augeas-helper.rb, line 23
23:     def initialize(guestfs, guestfs_helper, options = {})
24:       @guestfs        = guestfs
25:       @guestfs_helper = guestfs_helper
26:       @log            = options[:log] || LogHelper.new
27: 
28:       @files = {}
29:     end

[Source]

    # File lib/boxgrinder-build/helpers/augeas-helper.rb, line 23
23:     def initialize(guestfs, guestfs_helper, options = {})
24:       @guestfs        = guestfs
25:       @guestfs_helper = guestfs_helper
26:       @log            = options[:log] || LogHelper.new
27: 
28:       @files = {}
29:     end

Public Instance methods

[Source]

    # File lib/boxgrinder-build/helpers/augeas-helper.rb, line 31
31:     def edit(&block)
32:       @log.debug "Changing configuration files using augeas..."
33: 
34:       instance_eval &block if block
35: 
36:       if @files.empty?
37:         @log.debug "No files specified to change, skipping..."
38:         return
39:       end
40: 
41:       if @guestfs.debug("help", []).include?('core_pattern')
42:         @log.trace "Enabling coredump catching for augeas..."
43:         @guestfs.debug("core_pattern", ["/sysroot/core"])
44:       end
45: 
46:       @guestfs.aug_init("/", 32)
47: 
48:       unload = []
49: 
50:       @files.keys.each do |file_name|
51:         unload << ". != '#{file_name}'"
52:       end
53: 
54:       @guestfs.aug_rm("/augeas/load//incl[#{unload.join(' and ')}]")
55:       @guestfs.aug_load
56: 
57:       @files.each do |file, changes|
58:         changes.each do |key, value|
59: 
60:           @guestfs.aug_set("/files#{file}/#{key}", value)
61:         end
62:       end
63: 
64:       @guestfs.aug_save
65:       @guestfs.aug_close
66: 
67:       @log.debug "Augeas changes saved."
68:     end

[Source]

    # File lib/boxgrinder-build/helpers/augeas-helper.rb, line 31
31:     def edit(&block)
32:       @log.debug "Changing configuration files using augeas..."
33: 
34:       instance_eval &block if block
35: 
36:       if @files.empty?
37:         @log.debug "No files specified to change, skipping..."
38:         return
39:       end
40: 
41:       if @guestfs.debug("help", []).include?('core_pattern')
42:         @log.trace "Enabling coredump catching for augeas..."
43:         @guestfs.debug("core_pattern", ["/sysroot/core"])
44:       end
45: 
46:       @guestfs.aug_init("/", 32)
47: 
48:       unload = []
49: 
50:       @files.keys.each do |file_name|
51:         unload << ". != '#{file_name}'"
52:       end
53: 
54:       @guestfs.aug_rm("/augeas/load//incl[#{unload.join(' and ')}]")
55:       @guestfs.aug_load
56: 
57:       @files.each do |file, changes|
58:         changes.each do |key, value|
59: 
60:           @guestfs.aug_set("/files#{file}/#{key}", value)
61:         end
62:       end
63: 
64:       @guestfs.aug_save
65:       @guestfs.aug_close
66: 
67:       @log.debug "Augeas changes saved."
68:     end

[Source]

    # File lib/boxgrinder-build/helpers/augeas-helper.rb, line 70
70:     def set(name, key, value)
71:       unless @guestfs.exists(name) != 0
72:         @log.debug "File '#{name}' doesn't exists, skipping augeas changes..."
73:         return
74:       end
75: 
76:       @files[name] = {} unless @files.has_key?(name)
77:       @files[name][key] = value
78:     end

[Source]

    # File lib/boxgrinder-build/helpers/augeas-helper.rb, line 70
70:     def set(name, key, value)
71:       unless @guestfs.exists(name) != 0
72:         @log.debug "File '#{name}' doesn't exists, skipping augeas changes..."
73:         return
74:       end
75: 
76:       @files[name] = {} unless @files.has_key?(name)
77:       @files[name][key] = value
78:     end

[Validate]