Sha256: fc1e93a92d63311f1befa15e94af2113b55592d2cfc4254fd67edddcd3b86371

Contents?: true

Size: 1.34 KB

Versions: 6

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

class Rustic::Validator
  def initialize(config)
    @config = config
  end

  def validate
    @errors = []
    @warnings = []
    validate_config!
    validate_backup_config!
    [@errors, @warnings]
  end

  private

  def validate_config! # rubocop:disable Metrics/AbcSize
    if @config.restic_path.nil? || File.which(@config.restic_path).nil?
      error!("restic path is miconfigured: '#{@config.restic_path.inspect}'")
    end
    error!("repository is not configured") if @config.repository.nil?
    error!("password is not configured") if @config.password.nil? && @config.password_file.nil?
    warning!("backup is not configured") if @config.backup_config.nil?
  end

  def validate_backup_config! # rubocop:disable Metrics/AbcSize
    config = @config.backup_config
    return if config.nil?

    return unless @config.strict_validation

    error!("backup paths must be alphabetically sorted") if config.paths != config.paths.sort
    error!("backup paths contain duplicates") if config.paths != config.paths.uniq
    error!("excluded paths must be alphabetically sorted") if config.excluded_paths != config.excluded_paths.sort
    error!("excluded paths contain duplicates") if config.excluded_paths != config.excluded_paths.uniq
  end

  def error!(message) = @errors << message

  def warning!(message) = @warnings << message
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rustic-0.5.0 lib/rustic/validator.rb
rustic-0.4.0 lib/rustic/validator.rb
rustic-0.3.3 lib/rustic/validator.rb
rustic-0.3.2 lib/rustic/validator.rb
rustic-0.3.1 lib/rustic/validator.rb
rustic-0.3.0 lib/rustic/validator.rb