Class: FitCommit::ConfigurationLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/fit_commit/configuration_loader.rb

Constant Summary collapse

SYSTEM_FILEPATH =
"/etc/fit_commit.yml"
LOCAL_FILEPATH =
".fit_commit.yml"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filepaths) ⇒ ConfigurationLoader

Returns a new instance of ConfigurationLoader.



8
9
10
# File 'lib/fit_commit/configuration_loader.rb', line 8

def initialize(filepaths)
  self.filepaths = filepaths
end

Class Method Details

.config_filepathObject



42
43
44
# File 'lib/fit_commit/configuration_loader.rb', line 42

def self.config_filepath
  File.join(git_top_level, "config", "fit_commit.yml")
end

.default_configurationObject



12
13
14
# File 'lib/fit_commit/configuration_loader.rb', line 12

def self.default_configuration
  new(default_filepaths).configuration
end

.default_filepathsObject



24
25
26
27
28
29
30
31
32
# File 'lib/fit_commit/configuration_loader.rb', line 24

def self.default_filepaths
  [
    gem_default_filepath,
    SYSTEM_FILEPATH,
    user_filepath,
    config_filepath,
    LOCAL_FILEPATH
  ]
end

.gem_default_filepathObject



34
35
36
# File 'lib/fit_commit/configuration_loader.rb', line 34

def self.gem_default_filepath
  File.expand_path("../../../templates/config/fit_commit.default.yml", __FILE__)
end

.git_top_levelObject



46
47
48
49
50
# File 'lib/fit_commit/configuration_loader.rb', line 46

def self.git_top_level
  top_level = `git rev-parse --show-toplevel`.chomp.strip
  fail "Git repo not found! Please submit a bug report." if top_level == ""
  top_level
end

.user_filepathObject



38
39
40
# File 'lib/fit_commit/configuration_loader.rb', line 38

def self.user_filepath
  File.join(ENV["HOME"], ".fit_commit.yml")
end

Instance Method Details

#configurationObject



16
17
18
19
20
21
22
# File 'lib/fit_commit/configuration_loader.rb', line 16

def configuration
  filepaths.each_with_object({}) do |filepath, config|
    config.merge!(read_config(filepath)) do |_key, oldval, newval|
      oldval.merge(newval)
    end
  end
end