Class: KeySloth::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/keysloth/config.rb

Overview

Класс для управления конфигурацией KeySloth

Поддерживает загрузку конфигурации из YAML файла .keyslothrc. Параметры командной строки имеют приоритет над файлом конфигурации.

Examples:

Структура файла .keyslothrc

repo_url: "[email protected]:company/secrets.git"
branch: "main"
local_path: "./secrets"
backup_count: 3

Использование

config = KeySloth::Config.load('.keyslothrc')
merged = config.merge(repo_url: 'override_url')

Author:

  • KeySloth Team

Since:

  • 0.1.0

Constant Summary collapse

DEFAULT_CONFIG =

Значения конфигурации по умолчанию

Since:

  • 0.1.0

{
  branch: 'main',
  backup_count: 3,
  local_path: './secrets'
}.freeze

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_hash = {}) ⇒ Config

Инициализация объекта конфигурации

Parameters:

  • config_hash (Hash) (defaults to: {}) —

    Хеш с параметрами конфигурации

Since:

  • 0.1.0



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

Загружает конфигурацию из файла

Parameters:

  • config_file (String, nil) (defaults to: nil) —

    Путь к файлу конфигурации

Returns:

  • (Config) —

    Объект конфигурации

Raises:

  • (ConfigurationError) —

    при ошибках чтения файла конфигурации

Since:

  • 0.1.0



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

Возвращает значение конфигурации по ключу

Parameters:

  • key (Symbol, String) —

    Ключ конфигурации

Returns:

  • (Object) —

    Значение конфигурации

Since:

  • 0.1.0



71
72
73
# File 'lib/keysloth/config.rb', line 71

def [](key)
  @config[key.to_sym]
end

#[]=(key, value) ⇒ Object

Устанавливает значение конфигурации

Parameters:

  • key (Symbol, String) —

    Ключ конфигурации

  • value (Object) —

    Значение конфигурации

Since:

  • 0.1.0



79
80
81
# File 'lib/keysloth/config.rb', line 79

def []=(key, value)
  @config[key.to_sym] = value
end

#merge(overrides = {}) ⇒ Hash

Объединяет текущую конфигурацию с новыми параметрами

Parameters:

  • overrides (Hash) (defaults to: {}) —

    Параметры для переопределения

Returns:

  • (Hash) —

    Объединенная конфигурация

Since:

  • 0.1.0



63
64
65
# File 'lib/keysloth/config.rb', line 63

def merge(overrides = {})
  @config.merge(symbolize_keys(overrides))
end

#to_h ⇒ Hash

Возвращает все параметры конфигурации

Returns:

  • (Hash) —

    Хеш конфигурации

Since:

  • 0.1.0



86
87
88
# File 'lib/keysloth/config.rb', line 86

def to_h
  @config.dup
end

#validate!(required_keys = []) ⇒ Object

Валидирует обязательные параметры конфигурации

Parameters:

  • required_keys (Array<Symbol>) (defaults to: []) —

    Список обязательных ключей

Raises:

  • (ValidationError) —

    при отсутствии обязательных параметров

Since:

  • 0.1.0



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