Class: KeySloth::Config
- Inherits:
-
Object
- Object
- KeySloth::Config
- Defined in:
- lib/keysloth/config.rb
Overview
Класс для управления конфигурацией KeySloth
Поддерживает загрузку конфигурации из YAML файла .keyslothrc. Параметры командной строки имеют приоритет над файлом конфигурации.
Constant Summary collapse
- DEFAULT_CONFIG =
Значения конфигурации по умолчанию
{ branch: 'main', backup_count: 3, local_path: './secrets' }.freeze
Class Method Summary collapse
-
.load(config_file = nil) ⇒ Config
Загружает конфигурацию из файла.
Instance Method Summary collapse
-
#[](key) ⇒ Object
Возвращает значение конфигурации по ключу.
-
#[]=(key, value) ⇒ Object
Устанавливает значение конфигурации.
-
#initialize(config_hash = {}) ⇒ Config
constructor
Инициализация объекта конфигурации.
-
#merge(overrides = {}) ⇒ Hash
Объединяет текущую конфигурацию с новыми параметрами.
-
#to_h ⇒ Hash
Возвращает все параметры конфигурации.
-
#validate!(required_keys = []) ⇒ Object
Валидирует обязательные параметры конфигурации.
Constructor Details
#initialize(config_hash = {}) ⇒ Config
Инициализация объекта конфигурации
35 36 37 |
# File 'lib/keysloth/config.rb', line 35 def initialize(config_hash = {}) @config = DEFAULT_CONFIG.merge(symbolize_keys(config_hash)) end |
Class Method Details
.load(config_file = nil) ⇒ Config
Загружает конфигурацию из файла
44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/keysloth/config.rb', line 44 def self.load(config_file = nil) config_path = resolve_config_path(config_file) if config_path && File.exist?(config_path) begin yaml_content = YAML.load_file(config_path) new(yaml_content || {}) rescue StandardError => e raise ConfigurationError, "Ошибка чтения конфигурации из #{config_path}: #{e.message}", e end else new end end |
Instance Method Details
#[](key) ⇒ Object
Возвращает значение конфигурации по ключу
71 72 73 |
# File 'lib/keysloth/config.rb', line 71 def [](key) @config[key.to_sym] end |
#[]=(key, value) ⇒ Object
Устанавливает значение конфигурации
79 80 81 |
# File 'lib/keysloth/config.rb', line 79 def []=(key, value) @config[key.to_sym] = value end |
#merge(overrides = {}) ⇒ Hash
Объединяет текущую конфигурацию с новыми параметрами
63 64 65 |
# File 'lib/keysloth/config.rb', line 63 def merge(overrides = {}) @config.merge(symbolize_keys(overrides)) end |
#to_h ⇒ Hash
Возвращает все параметры конфигурации
86 87 88 |
# File 'lib/keysloth/config.rb', line 86 def to_h @config.dup end |
#validate!(required_keys = []) ⇒ Object
Валидирует обязательные параметры конфигурации
94 95 96 97 98 99 100 |
# File 'lib/keysloth/config.rb', line 94 def validate!(required_keys = []) missing_keys = required_keys.select { |key| @config[key].nil? || @config[key].to_s.empty? } unless missing_keys.empty? raise ValidationError, "Отсутствуют обязательные параметры: #{missing_keys.join(', ')}" end end |