Class: Lilac::CLI::ConfigLoader
- Inherits:
-
Object
- Object
- Lilac::CLI::ConfigLoader
- Defined in:
- lib/lilac/cli/config_loader.rb
Overview
Reads lilac.config.rb from a project root. The file uses the
Lilac::CLI.configure DSL:
Lilac::CLI.configure do |c|
c.components_dir = "src/components"
c.dev_port = 3000
end
Unset fields stay nil so callers (Config.load) can fall through to
their hardcoded defaults. The DSL is only callable during a
ConfigLoader.load invocation; calling it outside that context
raises, which catches typos like Lilac.configure { ... } in
arbitrary scripts.
Defined Under Namespace
Constant Summary collapse
- DEFAULT_FILENAME =
"lilac.config.rb"
Class Method Summary collapse
- .current_settings ⇒ Object
-
.load(root, filename: DEFAULT_FILENAME) ⇒ Object
Loads
<root>/lilac.config.rbif present and returns a Settings struct (with nils for unset fields). -
.with_settings(settings) ⇒ Object
Singleton stash so
Lilac::CLI.configurecan find the active Settings without each config file passing it explicitly.
Class Method Details
.current_settings ⇒ Object
82 83 84 |
# File 'lib/lilac/cli/config_loader.rb', line 82 def self.current_settings Thread.current[:lilac_cli_settings] end |
.load(root, filename: DEFAULT_FILENAME) ⇒ Object
Loads <root>/lilac.config.rb if present and returns a
Settings struct (with nils for unset fields). Returns nil when
the file doesn't exist — callers treat that as "use defaults".
57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/lilac/cli/config_loader.rb', line 57 def self.load(root, filename: DEFAULT_FILENAME) path = File.join(root, filename) return nil unless File.file?(path) settings = Settings.new with_settings(settings) do begin Kernel.load(path) rescue StandardError, ScriptError => e raise LoadError, "Error loading #{filename}: #{e.}" end end settings end |
.with_settings(settings) ⇒ Object
Singleton stash so Lilac::CLI.configure can find the active
Settings without each config file passing it explicitly.
74 75 76 77 78 79 80 |
# File 'lib/lilac/cli/config_loader.rb', line 74 def self.with_settings(settings) previous = Thread.current[:lilac_cli_settings] Thread.current[:lilac_cli_settings] = settings yield ensure Thread.current[:lilac_cli_settings] = previous end |