Class: Tailor::Configuration
- Inherits:
-
Object
- Object
- Tailor::Configuration
- Includes:
- Logger::Mixin
- Defined in:
- lib/tailor/configuration.rb,
lib/tailor/configuration/style.rb,
lib/tailor/configuration/file_set.rb
Overview
Pulls in any configuration from the places configuration can be set:
1. ~/.tailorrc
2. CLI options
3. Default options
It then basically represents a list of “file sets” and the rulers that should be applied against each file set.
If a file list is given from the CLI and a configuration file is given/found, tailor uses the style settings for the default file set and only checks the default file set.
Defined Under Namespace
Constant Summary collapse
- DEFAULT_RC_FILE =
Dir.home + '/.tailorrc'
- DEFAULT_PROJECT_CONFIG =
Dir.pwd + '/.tailor'
Instance Attribute Summary collapse
- #file_sets ⇒ Hash readonly
-
#formatters(*new_formatters) ⇒ Array
readonly
The list of formatters.
- #output_file ⇒ String readonly
Class Method Summary collapse
Instance Method Summary collapse
-
#config_file ⇒ String
Name of the config file to use.
-
#file_set(file_expression = 'lib/**/*.rb', label = :default) {|new_style| ... } ⇒ Object
Adds a file set to the list of file sets in the Configuration object.
-
#get_file_sets_from_cli_opts ⇒ Object
If any files are given from the CLI, this gets that list of files and replaces those in any :default file set.
- #get_file_sets_from_config_file ⇒ Object
- #get_formatters_from_cli_opts ⇒ Object
- #get_formatters_from_config_file ⇒ Object
- #get_output_file_from_cli_opts ⇒ Object
- #get_style_from_cli_opts ⇒ Object
-
#initialize(runtime_file_list = nil, options = nil) ⇒ Configuration
constructor
A new instance of Configuration.
-
#load! ⇒ Object
Call this to load settings from the config file and from CLI options.
-
#load_from_config_file(config_file) ⇒ Object
Tries to open the file at the path given at
config_file
and read in the configuration given there. -
#recursive_file_set(file_expression, label = :default) ⇒ Object
A helper to #file_set that allows you to specify ‘*.rb’ to get all files ending with
.rb
in your current path and deeper. -
#show ⇒ Object
Displays the current configuration as a text table.
Methods included from Logger::Mixin
Constructor Details
#initialize(runtime_file_list = nil, options = nil) ⇒ Configuration
Returns a new instance of Configuration.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/tailor/configuration.rb', line 45 def initialize(runtime_file_list=nil, =nil) @formatters = %w[text] @file_sets = {} @output_file = '' @runtime_file_list = runtime_file_list log "Got runtime file list: #{@runtime_file_list}" @options = log "Got options: #{@options}" unless @options.nil? @config_file = @options.config_file unless @options.config_file.empty? end end |
Instance Attribute Details
#file_sets ⇒ Hash (readonly)
32 33 34 |
# File 'lib/tailor/configuration.rb', line 32 def file_sets @file_sets end |
#formatters(*new_formatters) ⇒ Array (readonly)
Returns The list of formatters.
35 36 37 |
# File 'lib/tailor/configuration.rb', line 35 def formatters @formatters end |
#output_file ⇒ String (readonly)
38 39 40 |
# File 'lib/tailor/configuration.rb', line 38 def output_file @output_file end |
Class Method Details
.default ⇒ Hash
27 28 29 |
# File 'lib/tailor/configuration.rb', line 27 def self.default new end |
Instance Method Details
#config_file ⇒ String
Returns Name of the config file to use.
104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/tailor/configuration.rb', line 104 def config_file return @config_file if @config_file if File.exists?(DEFAULT_PROJECT_CONFIG) return @config_file = DEFAULT_PROJECT_CONFIG end if File.exists?(DEFAULT_RC_FILE) return @config_file = DEFAULT_RC_FILE end end |
#file_set(file_expression = 'lib/**/*.rb', label = :default) {|new_style| ... } ⇒ Object
Adds a file set to the list of file sets in the Configuration object.
199 200 201 202 203 204 205 206 207 208 |
# File 'lib/tailor/configuration.rb', line 199 def file_set(file_expression='lib/**/*.rb', label=:default) log "file sets before: #{@file_sets}" log "file set label #{label}" new_style = Style.new yield new_style if block_given? @file_sets[label] = FileSet.new(file_expression, new_style) log "file sets after: #{@file_sets}" end |
#get_file_sets_from_cli_opts ⇒ Object
If any files are given from the CLI, this gets that list of files and replaces those in any :default file set.
159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/tailor/configuration.rb', line 159 def get_file_sets_from_cli_opts return if @runtime_file_list.nil? || @runtime_file_list.empty? # Only use options set for the :default file set because the user gave # a different set of files to measure. @file_sets.delete_if { |k, v| k != :default } if @file_sets.include? :default @file_sets[:default].file_list = @runtime_file_list else @file_sets = { default: FileSet.new(@runtime_file_list) } end end |
#get_file_sets_from_config_file ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/tailor/configuration.rb', line 116 def get_file_sets_from_config_file return if @config_from_file.file_sets.empty? @config_from_file.file_sets.each do |label, file_set| log "label: #{label}" log "file set file list: #{file_set[:file_list]}" log "file set style: #{file_set[:style]}" if @file_sets[label] log "label already exists. Updating..." @file_sets[label].update_file_list(file_set[:file_list]) @file_sets[label].update_style(file_set[:style]) else log "Creating new label: #{label}" @file_sets[label] = FileSet.new(file_set[:file_list], file_set[:style]) end end end |
#get_formatters_from_cli_opts ⇒ Object
180 181 182 183 184 185 |
# File 'lib/tailor/configuration.rb', line 180 def get_formatters_from_cli_opts unless @options.nil? || @options.formatters.empty? || @options.formatters.nil? @formatters = @options.formatters log "@formatters is now: '#{@formatters}'" end end |
#get_formatters_from_config_file ⇒ Object
136 137 138 139 140 141 |
# File 'lib/tailor/configuration.rb', line 136 def get_formatters_from_config_file return if @config_from_file.formatters.empty? @formatters = @config_from_file.formatters log "@formatters is now #{@formatters}" end |
#get_output_file_from_cli_opts ⇒ Object
173 174 175 176 177 178 |
# File 'lib/tailor/configuration.rb', line 173 def get_output_file_from_cli_opts unless @options.nil? || @options.output_file.empty? || @options.output_file.nil? @output_file = @options.output_file log "@output_file is now: '#{@output_file}'" end end |
#get_style_from_cli_opts ⇒ Object
143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/tailor/configuration.rb', line 143 def get_style_from_cli_opts return unless @options && @options.style @options.style.each do |property, value| @file_sets.keys.each do |label| if value == :off || value == "off" @file_sets[label].style[property][1] = { level: :off } else @file_sets[label].style[property][0] = value end end end end |
#load! ⇒ Object
Call this to load settings from the config file and from CLI options.
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/tailor/configuration.rb', line 61 def load! if config_file load_from_config_file(config_file) if @config_from_file get_formatters_from_config_file #get_file_sets_from_config_file unless @runtime_file_list get_file_sets_from_config_file end else log "Creating default file set..." @file_sets = { default: FileSet.new(@runtime_file_list) } end get_output_file_from_cli_opts get_formatters_from_cli_opts get_file_sets_from_cli_opts get_style_from_cli_opts end |
#load_from_config_file(config_file) ⇒ Object
Tries to open the file at the path given at config_file
and read in the configuration given there.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/tailor/configuration.rb', line 85 def load_from_config_file(config_file) user_config_file = File.(config_file) if File.exists? user_config_file log "Loading config from file: #{user_config_file}" begin @config_from_file = instance_eval(File.read(user_config_file), user_config_file) log "Got new config from file: #{user_config_file}" rescue LoadError => ex raise Tailor::RuntimeError, "Couldn't load config file: #{user_config_file}" end else abort "No config file found at #{user_config_file}." end end |
#recursive_file_set(file_expression, label = :default) ⇒ Object
A helper to #file_set that allows you to specify ‘*.rb’ to get all files ending with .rb
in your current path and deeper.
215 216 217 |
# File 'lib/tailor/configuration.rb', line 215 def recursive_file_set(file_expression, label=:default) file_set("*/**/#{file_expression}", label) end |
#show ⇒ Object
Displays the current configuration as a text table.
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/tailor/configuration.rb', line 220 def show table = Text::Table.new(horizontal_padding: 4) table.head = [{ value: 'Configuration', colspan: 2, align: :center }] table.rows << :separator table.rows << ['Formatters', @formatters] table.rows << ['Output File', @output_file] @file_sets.each do |label, file_set| table.rows << :separator table.rows << ['Label', label] table.rows << ['Style', ''] file_set[:style].each do |k, v| table.rows << ['', "#{k}: #{v}"] end table.rows << ['File List', ''] file_set[:file_list].each { |file| table.rows << ['', file] } end puts table end |