Module: Ace::Assign::Atoms::PresetLoader
- Defined in:
- lib/ace/assign/atoms/preset_loader.rb
Overview
Loads assign presets from project overrides first, then gem defaults.
Constant Summary collapse
- VALID_PRESET_NAME =
/\A[A-Za-z0-9_-]+\z/.freeze
Class Method Summary collapse
Class Method Details
.load(preset_name) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ace/assign/atoms/preset_loader.rb', line 12 def self.load(preset_name) name = preset_name.to_s.strip raise Ace::Support::Cli::Error, "Preset name cannot be empty" if name.empty? unless VALID_PRESET_NAME.match?(name) raise Ace::Support::Cli::Error, "Invalid preset name '#{name}'. Allowed characters: letters, numbers, underscore, hyphen." end path = resolve_path(name) raise Ace::Support::Cli::Error, "Preset '#{name}' not found" unless path data = YAML.safe_load_file(path, aliases: true) unless data.is_a?(Hash) raise Ace::Support::Cli::Error, "Preset '#{name}' is invalid" end data rescue Psych::SyntaxError => e raise Ace::Support::Cli::Error, "Invalid YAML in preset '#{name}': #{e.}" end |