Skip to content

Commit

Permalink
more intuitive config locations
Browse files Browse the repository at this point in the history
  • Loading branch information
grosser committed Nov 19, 2012
1 parent a2e541b commit 9692f10
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 23 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ Brakeman options can stored and read from YAML files. To simplify the process of

Options passed in on the commandline have priority over configuration files.

The default config locations are `./config.yaml`, `~/.brakeman/`, and `/etc/brakeman/config.yaml`
The default config locations are `./config/brakeman.yml`, `~/.brakeman/config.yml`, and `/etc/brakeman/config.yml`

The `-c` option can be used to specify a configuration file to use.

Expand Down
51 changes: 29 additions & 22 deletions lib/brakeman.rb
Original file line number Diff line number Diff line change
Expand Up @@ -80,31 +80,38 @@ def self.set_options options
options
end

#Load options from YAML file
def self.load_options config_file
config_file ||= ""
DEPRECATED_CONFIG_FILES = [
File.expand_path("./config.yaml"),
File.expand_path("~/.brakeman/config.yaml"),
File.expand_path("/etc/brakeman/config.yaml"),
"#{File.expand_path(File.dirname(__FILE__))}/../lib/config.yaml"
]

CONFIG_FILES = [
File.expand_path("./config/brakeman.yml"),
File.expand_path("~/.brakeman/config.yml"),
File.expand_path("/etc/brakeman/config.yml"),
]

#Load options from YAML file
def self.load_options custom_location
#Load configuration file
[File.expand_path(config_file),
File.expand_path("./config.yaml"),
File.expand_path("~/.brakeman/config.yaml"),
File.expand_path("/etc/brakeman/config.yaml"),
"#{File.expand_path(File.dirname(__FILE__))}/../lib/config.yaml"].each do |f|

if File.exist? f and not File.directory? f
notify "[Notice] Using configuration in #{f}"
options = YAML.load_file f
options.each do |k,v|
if v.is_a? Array
options[k] = Set.new v
end
end

return options
end
end
if config = config_file(custom_location)
notify "[Notice] Using configuration in #{config}"
options = YAML.load_file config
options.each { |k, v| options[k] = Set.new v if v.is_a? Array }
options
else
{}
end
end

return {}
def self.config_file(custom_location=nil)
DEPRECATED_CONFIG_FILES.each do |f|
warn "#{f} is deprecated, please use one of #{CONFIG_FILES.join(", ")}" if File.file?(f)
end
supported_locations = [File.expand_path(custom_location || "")] + DEPRECATED_CONFIG_FILES + CONFIG_FILES
supported_locations.detect{|f| File.file?(f) }
end

#Default set of options
Expand Down

0 comments on commit 9692f10

Please sign in to comment.