mirror of
https://github.com/inspec/inspec
synced 2025-02-17 06:28:40 +00:00
replace parseconfig with simpleconfig
Signed-off-by: Dominik Richter <dominik.richter@gmail.com>
This commit is contained in:
parent
8b97bdbaa7
commit
aa4593ff71
2 changed files with 2 additions and 188 deletions
|
@ -2,7 +2,7 @@
|
|||
# copyright: 2015, Vulcano Security GmbH
|
||||
# license: All rights reserved
|
||||
|
||||
require 'utils/parseconfig'
|
||||
require 'utils/simpleconfig'
|
||||
require 'utils/find_files'
|
||||
require 'utils/hash'
|
||||
require 'resources/mysql'
|
||||
|
@ -75,7 +75,7 @@ class MysqlConf < Vulcano.resource(1)
|
|||
raw_conf = read_file(cur_file)
|
||||
@content += raw_conf
|
||||
|
||||
params = ParseConfig.new(raw_conf).params
|
||||
params = SimpleConfig.new(raw_conf).params
|
||||
@params = @params.deep_merge(params)
|
||||
|
||||
to_read = to_read.drop(1)
|
||||
|
|
|
@ -1,186 +0,0 @@
|
|||
# encoding: utf-8
|
||||
#
|
||||
# Author:: BJ Dierkes <derks@datafolklabs.com>
|
||||
# Copyright:: Copyright (c) 2006,2013 BJ Dierkes
|
||||
# License:: MIT
|
||||
# URL:: https://github.com/datafolklabs/ruby-parseconfig
|
||||
#
|
||||
|
||||
# This class was written to simplify the parsing of configuration
|
||||
# files in the format of "param = value". Please review the
|
||||
# demo files included with this package.
|
||||
#
|
||||
# For further information please refer to the './doc' directory
|
||||
# as well as the ChangeLog and README files included.
|
||||
#
|
||||
|
||||
# Note: A group is a set of parameters defined for a subpart of a
|
||||
# config file
|
||||
|
||||
class ParseConfig
|
||||
Version = '1.0.6'
|
||||
|
||||
attr_accessor :conf, :params, :groups
|
||||
|
||||
# Initialize the class with raw config data 'conf'
|
||||
# The class objects are dynamically generated by the
|
||||
# name of the 'param' in the config file. Therefore, if
|
||||
# the config file is 'param = value' then the itializer
|
||||
# will eval "@param = value"
|
||||
#
|
||||
def initialize(conf=nil, separator = '=')
|
||||
@params = {}
|
||||
@groups = []
|
||||
@splitRegex = '\s*' + separator + '\s*'
|
||||
|
||||
self.import_config(conf)
|
||||
end
|
||||
|
||||
# Import data from the config to our config object.
|
||||
def import_config(raw)
|
||||
# The config is top down.. anything after a [group] gets added as part
|
||||
# of that group until a new [group] is found.
|
||||
group = nil
|
||||
raw.split("\n").each_with_index do |line, i|
|
||||
line.strip!
|
||||
|
||||
# force_encoding not available in all versions of ruby
|
||||
begin
|
||||
if i.eql? 0 and line.include?("\xef\xbb\xbf".force_encoding("UTF-8"))
|
||||
line.delete!("\xef\xbb\xbf".force_encoding("UTF-8"))
|
||||
end
|
||||
rescue NoMethodError
|
||||
end
|
||||
|
||||
unless (/^\#/.match(line))
|
||||
if(/#{@splitRegex}/.match(line))
|
||||
param, value = line.split(/#{@splitRegex}/, 2)
|
||||
var_name = "#{param}".chomp.strip
|
||||
value = value.chomp.strip
|
||||
new_value = ''
|
||||
if (value)
|
||||
if value =~ /^['"](.*)['"]$/
|
||||
new_value = $1
|
||||
else
|
||||
new_value = value
|
||||
end
|
||||
else
|
||||
new_value = ''
|
||||
end
|
||||
|
||||
if group
|
||||
self.add_to_group(group, var_name, new_value)
|
||||
else
|
||||
self.add(var_name, new_value)
|
||||
end
|
||||
|
||||
elsif(/^\[(.+)\]$/.match(line).to_a != [])
|
||||
group = /^\[(.+)\]$/.match(line).to_a[1]
|
||||
self.add(group, {})
|
||||
|
||||
else
|
||||
rest = line.strip
|
||||
self.add(rest, true) unless rest.empty?
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# This method will provide the value held by the object "@param"
|
||||
# where "@param" is actually the name of the param in the config
|
||||
# file.
|
||||
#
|
||||
# DEPRECATED - will be removed in future versions
|
||||
#
|
||||
def get_value(param)
|
||||
puts 'ParseConfig Deprecation Warning: get_value() is deprecated. Use ' \
|
||||
"config['param'] or config['group']['param'] instead."
|
||||
self.params[param]
|
||||
end
|
||||
|
||||
# This method is a shortcut to accessing the @params variable
|
||||
def [](param)
|
||||
self.params[param]
|
||||
end
|
||||
|
||||
# This method returns all parameters/groups defined in a config file.
|
||||
def get_params()
|
||||
self.params.keys
|
||||
end
|
||||
|
||||
# List available sub-groups of the config.
|
||||
def get_groups()
|
||||
self.groups
|
||||
end
|
||||
|
||||
# This method adds an element to the config object (not the config file)
|
||||
# By adding a Hash, you create a new group
|
||||
def add(param_name, value)
|
||||
if value.class == Hash
|
||||
if self.params.has_key?(param_name)
|
||||
if self.params[param_name].class == Hash
|
||||
self.params[param_name].merge!(value)
|
||||
elsif self.params.has_key?(param_name)
|
||||
if self.params[param_name].class != value.class
|
||||
fail ArgumentError, "#{param_name} already exists, and is of different type!"
|
||||
end
|
||||
end
|
||||
else
|
||||
self.params[param_name] = value
|
||||
end
|
||||
if ! self.groups.include?(param_name)
|
||||
self.groups.push(param_name)
|
||||
end
|
||||
else
|
||||
self.params[param_name] = value
|
||||
end
|
||||
end
|
||||
|
||||
# Add parameters to a group. Note that parameters with the same name
|
||||
# could be placed in different groups
|
||||
def add_to_group(group, param_name, value)
|
||||
if ! self.groups.include?(group)
|
||||
self.add(group, {})
|
||||
end
|
||||
self.params[group][param_name] = value
|
||||
end
|
||||
|
||||
# Writes out the config file to output_stream
|
||||
def write(output_stream=STDOUT, quoted=true)
|
||||
self.params.each do |name,value|
|
||||
if value.class.to_s != 'Hash'
|
||||
if quoted == true
|
||||
output_stream.puts "#{name} = \"#{value}\""
|
||||
else
|
||||
output_stream.puts "#{name} = #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
output_stream.puts "\n"
|
||||
|
||||
self.groups.each do |group|
|
||||
output_stream.puts "[#{group}]"
|
||||
self.params[group].each do |param, value|
|
||||
if quoted == true
|
||||
output_stream.puts "#{param} = \"#{value}\""
|
||||
else
|
||||
output_stream.puts "#{param} = #{value}"
|
||||
end
|
||||
end
|
||||
output_stream.puts "\n"
|
||||
end
|
||||
end
|
||||
|
||||
# Public: Compare this ParseConfig to some other ParseConfig. For two config to
|
||||
# be equivalent, they must have the same sections with the same parameters
|
||||
#
|
||||
# other - The other ParseConfig.
|
||||
#
|
||||
# Returns true if ParseConfig are equivalent and false if they differ.
|
||||
|
||||
def eql?(other)
|
||||
self.params == other.params && self.groups == other.groups
|
||||
end
|
||||
alias == eql?
|
||||
end
|
Loading…
Add table
Reference in a new issue