57 lines
1.4 KiB
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
module Vagrant
class BoxCollection
# This module enables the BoxCollection for server mode
module Remote
# Add an attribute reader for the client
# when applied to the BoxCollection class
def self.prepended(klass)
klass.class_eval do
attr_reader :client
end
end
def initialize(directory, options=nil)
@client = options[:client]
if @client.nil?
raise ArgumentError,
"Remote client is required for `#{self.class.name}'"
end
@hook = options[:hook]
@logger = Log4r::Logger.new("vagrant::box_collection")
end
# @return [Vagrant::Box]
def add(path, name, version, **opts)
client.add(
path, name, version, opts[:force], opts[:metadata_url], opts[:providers]
)
end
# @return [Array] Array of `[name, version, provider]` of the boxes
# installed on this system.
def all
all_boxes = client.all
boxes = []
all_boxes.each do |b|
boxes << [b.name, b.version, b.provider]
end
boxes
end
# @return [Box] The box found, or `nil` if not found.
def find(name, providers, version)
client.find(name, providers, version)
end
def clean(name)
client.clean(name)
end
end
end
end