lib/backup_repos/config.rb in backup_repos-0.3.0 vs lib/backup_repos/config.rb in backup_repos-0.4.0

- old
+ new

@@ -1,13 +1,15 @@ +# frozen_string_literal: true + require 'yaml' require 'hashie/mash' module BackupRepos class Config attr_reader :options - def initialize(options = Hashie::Mash.new({})) + def initialize(options = BackupRepos::Mash.new({})) @options = options end # === OPTIONS @@ -15,39 +17,55 @@ options.debug || config['debug'] end def backup_root return if backup_root_dir.blank? + File.expand_path(backup_root_dir) end def github_access_token config_token = config['github']['access_token'] if config['github'] options.github_access_token || config_token end + def only_list + return if options.only.blank? + + options.only.split(',').map(&:strip) + end + # === def method_missing(name, *_args) - options.send(name) || config[name.to_s] || super + return options.send(name) if options.respond_to?(name) + + config[name.to_s] end def respond_to_missing?(name, include_private = false) options.respond_to?(name) || config.key?(name.to_s) || super end def config_file - File.join(Dir.home, '.backup-repos') + return File.join(Dir.home, '.backup-repos') if options.config_path.blank? + + File.expand_path(options.config_path) end + def dig(*args) + config.dig(*args) + end + private def config - @config ||= Hashie::Mash.new(file_config) + @config ||= BackupRepos::Mash.new(file_config) end def file_config return {} unless File.exist?(config_file) + @file_config ||= (YAML.load_file(config_file) || {}) end def backup_root_dir options.backup_root || config['backup_root']