# File lib/openscap/xccdf/benchmark.rb, line 21 def initialize(p) case p when OpenSCAP::Source @raw = OpenSCAP.xccdf_benchmark_import_source p.raw else raise OpenSCAP::OpenSCAPError, "Cannot initialize OpenSCAP::Xccdf::Benchmark with '#{p}'" end OpenSCAP.raise! if @raw.null? end
# File lib/openscap/xccdf/benchmark.rb, line 40 def destroy OpenSCAP.xccdf_benchmark_free @raw @raw = nil end
# File lib/openscap/xccdf/benchmark.rb, line 36 def items @items ||= items_init end
# File lib/openscap/xccdf/benchmark.rb, line 32 def profiles @profiles ||= profiles_init end
# File lib/openscap/xccdf/benchmark.rb, line 59 def items_init items = {} items_it = OpenSCAP.xccdf_item_get_content raw while OpenSCAP.xccdf_item_iterator_has_more items_it item_p = OpenSCAP.xccdf_item_iterator_next items_it item = OpenSCAP::Xccdf::Item.build item_p items.merge! item.sub_items items[item.id] = item # TODO: iterate through childs end OpenSCAP.xccdf_item_iterator_free items_it items end
# File lib/openscap/xccdf/benchmark.rb, line 47 def profiles_init profiles = {} profit = OpenSCAP.xccdf_benchmark_get_profiles raw while OpenSCAP.xccdf_profile_iterator_has_more profit profile_p = OpenSCAP.xccdf_profile_iterator_next profit profile = OpenSCAP::Xccdf::Profile.new profile_p profiles[profile.id] = profile end OpenSCAP.xccdf_profile_iterator_free profit profiles end