module BackupJenkins
  class Config
    attr_reader :s3

    def initialize
      @config = config_file
    end

    def method_missing(meth, *args, &block)
      return config[meth.to_s] if config.has_key?(meth.to_s)
      super
    end

    def respond_to?(meth)
      config.has_key?(meth.to_s) || super
    end

    def base_file_name
      "#{backup["file_name_base"]}_#{hostname}"
    end

    def hostname
      %x{hostname -s}.chomp
    end

    private

    attr_reader :config

    def config_file
      YAML.load_file(config_file_path)
    rescue Errno::ENOENT
      STDERR.puts "Please create a config file in #{config_file_path}"
      STDERR.puts "\nIt should look like:\n\n#{File.read('config/config-example.yml')}"

      exit 1
    end

    def config_file_path
      "#{ENV['HOME']}/.config/backup_jenkins/config.yml"
    end
  end
end