Class: Ace::Task::Molecules::TaskConfigLoader
- Inherits:
-
Object
- Object
- Ace::Task::Molecules::TaskConfigLoader
- Defined in:
- lib/ace/task/molecules/task_config_loader.rb
Overview
Loads and merges configuration for ace-task from the cascade: .ace-defaults/task/config.yml (gem) -> ~/.ace/task/config.yml (user) -> .ace/task/config.yml (project)
Constant Summary collapse
- DEFAULT_ROOT_DIR =
".ace-tasks"
Class Method Summary collapse
-
.load(gem_root: nil) ⇒ Hash
Load configuration with cascade merge.
-
.root_dir(config = nil) ⇒ String
Get the root directory for tasks.
Instance Method Summary collapse
-
#initialize(gem_root:) ⇒ TaskConfigLoader
constructor
A new instance of TaskConfigLoader.
-
#load ⇒ Hash
Load and merge configuration.
Constructor Details
#initialize(gem_root:) ⇒ TaskConfigLoader
Returns a new instance of TaskConfigLoader.
22 23 24 |
# File 'lib/ace/task/molecules/task_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/task/molecules/task_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 tasks
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ace/task/molecules/task_config_loader.rb', line 37 def self.root_dir(config = nil) config ||= load dir = config.dig("task", "root_dir") || DEFAULT_ROOT_DIR 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/task/molecules/task_config_loader.rb', line 28 def load config = load_defaults config = deep_merge(config, load_user_config) deep_merge(config, load_project_config) end |