From 3f7b7ee65ad93e38871afefd88e21f9c563bdfbc Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Fri, 17 Dec 2021 14:58:15 -0800 Subject: [PATCH] Add mappers for loading command client --- plugins/commands/serve/mappers/command.rb | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/plugins/commands/serve/mappers/command.rb b/plugins/commands/serve/mappers/command.rb index 8429f571e..10bdc995c 100644 --- a/plugins/commands/serve/mappers/command.rb +++ b/plugins/commands/serve/mappers/command.rb @@ -17,6 +17,38 @@ module VagrantPlugins SDK::Command::Arguments.decode(proto.value.value) end end + + class CommandProtoFromSpec < Mapper + def initialize + super( + inputs: [Input.new(type: SDK::FuncSpec::Value) { |arg| + arg.type == "hashicorp.vagrant.sdk.Args.Command" && + !arg&.value&.value.nil? + } + ], + output: SDK::Args::Command, + func: method(:converter) + ) + end + + def converter(fv) + SDK::Args::Command.decode(fv.value.value) + end + end + + class CommandFromProto < Mapper + def initialize + inputs = [].tap do |i| + i << Input.new(type: SDK::Args::Command) + i << Input.new(type: Broker) + end + super(inputs: inputs, output: Client::Command, func: method(:converter)) + end + + def converter(proto, broker) + Client::Command.load(proto, broker: broker) + end + end end end end