module VagrantPlugins
  module Cachier
    class Config < Vagrant.plugin(2, :config)
      attr_accessor :scope, :auto_detect
      attr_reader   :buckets

      def initialize
        @scope       = UNSET_VALUE
        @auto_detect = UNSET_VALUE
      end

      def enable(bucket, opts = {})
        (@buckets ||= {})[bucket] = opts
      end

      def finalize!
        return unless enabled?

        @scope       = :box  if @scope == UNSET_VALUE
        @auto_detect = false if @auto_detect == UNSET_VALUE
        @buckets     = @buckets ? @buckets.dup : {}
      end

      def enabled?
        @enabled ||= @auto_detect != UNSET_VALUE ||
                     @buckets != nil
      end
    end
  end
end