Class: Ace::Idea::Molecules::IdeaConfigLoader
- Inherits:
-
Object
- Object
- Ace::Idea::Molecules::IdeaConfigLoader
- Defined in:
- lib/ace/idea/molecules/idea_config_loader.rb
Overview
Loads and merges configuration for ace-idea from the cascade: .ace-defaults/idea/config.yml (gem) -> ~/.ace/idea/config.yml (user) -> .ace/idea/config.yml (project)
Constant Summary collapse
- DEFAULT_ROOT_DIR =
".ace-ideas"
Class Method Summary collapse
-
.load(gem_root: nil) ⇒ Hash
Load configuration with cascade merge.
-
.root_dir(config = nil) ⇒ String
Get the root directory for ideas.
Instance Method Summary collapse
-
#initialize(gem_root:) ⇒ IdeaConfigLoader
constructor
A new instance of IdeaConfigLoader.
-
#load ⇒ Hash
Load and merge configuration.
Constructor Details
#initialize(gem_root:) ⇒ IdeaConfigLoader
Returns a new instance of IdeaConfigLoader.
22 23 24 |
# File 'lib/ace/idea/molecules/idea_config_loader.rb', line 22 def initialize(gem_root:) @gem_root = gem_root end |
Class Method Details
.load(gem_root: nil) ⇒ Hash
Load configuration with cascade merge
17 18 19 20 |
# File 'lib/ace/idea/molecules/idea_config_loader.rb', line 17 def self.load(gem_root: nil) gem_root ||= File.("../../../..", __dir__) new(gem_root: gem_root).load end |
.root_dir(config = nil) ⇒ String
Get the root directory for ideas
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ace/idea/molecules/idea_config_loader.rb', line 37 def self.root_dir(config = nil) config ||= load dir = config.dig("idea", "root_dir") || DEFAULT_ROOT_DIR # Make absolute if relative if dir.start_with?("/") dir else File.join(Ace::Support::Fs::Molecules::ProjectRootFinder.find_or_current, dir) end end |
Instance Method Details
#load ⇒ Hash
Load and merge configuration
28 29 30 31 32 |
# File 'lib/ace/idea/molecules/idea_config_loader.rb', line 28 def load config = load_defaults config = deep_merge(config, load_user_config) deep_merge(config, load_project_config) end |