Module: Timetrap::Config
Constant Summary collapse
- PATH =
ENV['TIMETRAP_CONFIG_FILE'] || File.join(ENV['HOME'], '.timetrap.yml')
Instance Method Summary collapse
- #[](key) ⇒ Object
- #configure! ⇒ Object
-
#defaults ⇒ Object
Application defaults.
- #erb_render(content) ⇒ Object
Instance Method Details
#[](key) ⇒ Object
29 30 31 32 33 34 35 36 |
# File 'lib/timetrap/config.rb', line 29 def [](key) overrides = File.exist?(PATH) ? YAML.load(erb_render(File.read(PATH))) : {} defaults.merge(overrides)[key] rescue => e warn "invalid config file" warn e. defaults[key] end |
#configure! ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/timetrap/config.rb', line 42 def configure! configs = if File.exist?(PATH) defaults.merge(YAML.load_file(PATH)) else defaults end File.open(PATH, 'w') do |fh| fh.puts(configs.to_yaml) end end |
#defaults ⇒ Object
Application defaults.
These are written to a config file by invoking: t configure
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/timetrap/config.rb', line 12 def defaults { # Path to the sqlite db 'database_file' => "#{ENV['HOME']}/.timetrap.db", # Unit of time for rounding (-r) in seconds 'round_in_seconds' => 900, # delimiter used when appending notes with `t edit --append` 'append_notes_delimiter' => ' ', # an array of directories to search for user defined fomatter classes 'formatter_search_paths' => [ "#{ENV['HOME']}/.timetrap/formatters" ], # formatter to use when display is invoked without a --format option 'default_formatter' => 'text' } end |
#erb_render(content) ⇒ Object
38 39 40 |
# File 'lib/timetrap/config.rb', line 38 def erb_render(content) ERB.new(content).result end |