Class: KamalBackup::ConfigFile
- Inherits:
-
Object
- Object
- KamalBackup::ConfigFile
- Defined in:
- lib/kamal_backup/config_file.rb
Overview
Parses one config/kamal-backup.yml into ConfigData. Parsed values resolve to the same env keys the backup accessory receives, so process ENV always wins over file config through a single merge in Config.
Constant Summary collapse
- TOP_LEVEL_KEYS =
%w[app accessory databases paths restore_from restic backup state].freeze
- LEGACY_KEYS =
%w[ app_name database_adapter database_url sqlite_database_path backup_paths local_restore_source_paths restic_repository restic_repository_file restic_password restic_password_file restic_password_command restic_init_if_missing restic_check_after_backup restic_check_read_data_subset restic_forget_after_backup restic_keep_last restic_keep_daily restic_keep_weekly restic_keep_monthly restic_keep_yearly backup_schedule_seconds backup_start_delay_seconds state_dir allow_suspicious_paths pgpassword mysql_pwd ].freeze
Instance Method Summary collapse
- #data ⇒ Object
-
#initialize(path, env:) ⇒ ConfigFile
constructor
A new instance of ConfigFile.
Constructor Details
#initialize(path, env:) ⇒ ConfigFile
Returns a new instance of ConfigFile.
51 52 53 54 |
# File 'lib/kamal_backup/config_file.rb', line 51 def initialize(path, env:) @path = path @env = env end |
Instance Method Details
#data ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/kamal_backup/config_file.rb', line 56 def data raw = YAML.safe_load(File.read(@path), permitted_classes: [], aliases: false) return ConfigData.empty if raw.nil? raise ConfigurationError, "#{@path} must contain a YAML mapping" unless raw.is_a?(Hash) raw.each_with_object(ConfigData.empty) do |(raw_key, raw_value), result| key = raw_key.to_s validate_top_level_key!(key) apply(result, key, raw_value) end rescue Psych::SyntaxError => e raise ConfigurationError, "invalid YAML in #{@path}: #{e.}" end |