diff --git a/plugins/commands/serve/client/box.rb b/plugins/commands/serve/client/box.rb index 2b6d42744..7d82d625c 100644 --- a/plugins/commands/serve/client/box.rb +++ b/plugins/commands/serve/client/box.rb @@ -61,7 +61,7 @@ module VagrantPlugins # @return [Hash] metadata (from metadata_url) def metadata res = client.metadata(Empty.new) - mapper.map(res.metadata, to: Hash) + mapper.map(res.metadata, to: Client::BoxMetadata) end # @return [String] metadata url diff --git a/plugins/commands/serve/mappers/box.rb b/plugins/commands/serve/mappers/box.rb index adc0d3d22..1b7ffa5e1 100644 --- a/plugins/commands/serve/mappers/box.rb +++ b/plugins/commands/serve/mappers/box.rb @@ -34,6 +34,20 @@ module VagrantPlugins ) end end + + class BoxMetadataFromProto < Mapper + def initialize + inputs = [].tap do |i| + i << Input.new(type: SDK::Args::BoxMetadata) + i << Input.new(type: Broker) + end + super(inputs: inputs, output: Client::BoxMetadata, func: method(:converter)) + end + + def converter(proto, broker) + Client::BoxMetadata.load(proto, broker: broker) + end + end end end end