Class: RosettAi::Packaging::VariantConfig
- Inherits:
-
Object
- Object
- RosettAi::Packaging::VariantConfig
- Defined in:
- lib/rosett_ai/packaging/variant_config.rb
Overview
Loads and validates packaging variant configs from conf/packaging/
Each variant declares a Debian package with its metadata, system dependencies, and package dependencies. The special version keyword "current" resolves to ">= #VERSION" at load time, ensuring atomic version updates per lifecycle_management.yml constraints.
Constant Summary collapse
- FIELDS =
[ :name, :variant, :description, :ui_adapter, :system_dependencies, :package_dependencies ].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #depends_on_core? ⇒ Boolean
- #fpm_depends ⇒ Object
-
#initialize(data) ⇒ VariantConfig
constructor
A new instance of VariantConfig.
Constructor Details
#initialize(data) ⇒ VariantConfig
Returns a new instance of VariantConfig.
25 26 27 28 29 30 31 |
# File 'lib/rosett_ai/packaging/variant_config.rb', line 25 def initialize(data) FIELDS.each do |field| instance_variable_set(:"@#{field}", data[field.to_s]) end @system_dependencies ||= [] @package_dependencies ||= [] end |
Class Method Details
.available ⇒ Object
45 46 47 48 49 |
# File 'lib/rosett_ai/packaging/variant_config.rb', line 45 def self.available Dir.glob(variants_dir.join('*.yml')).map do |file| File.basename(file, '.yml') end.sort end |
.load(variant_name) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rosett_ai/packaging/variant_config.rb', line 33 def self.load(variant_name) path = variants_dir.join("#{variant_name}.yml") unless path.exist? raise RosettAi::ConfigurationError, "Unknown variant: #{variant_name}. Available: #{available.join(', ')}" end data = RosettAi::YamlLoader.load_file(path) validate!(data, path) new(data) end |
Instance Method Details
#depends_on_core? ⇒ Boolean
64 65 66 |
# File 'lib/rosett_ai/packaging/variant_config.rb', line 64 def depends_on_core? package_dependencies.any? { |dep| dep['name'] == 'rosett-ai' } end |
#fpm_depends ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/rosett_ai/packaging/variant_config.rb', line 55 def fpm_depends deps = system_dependencies.dup package_dependencies.each do |dep| version = resolve_version(dep['version']) deps << "#{dep['name']} (#{version})" end deps end |