From cb28412a912feb30746b5e8c1dee6db6ca85fe0e Mon Sep 17 00:00:00 2001 From: sophia Date: Mon, 22 Nov 2021 11:41:15 -0600 Subject: [PATCH] Fill in synced folder client --- .../commands/serve/client/synced_folder.rb | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/plugins/commands/serve/client/synced_folder.rb b/plugins/commands/serve/client/synced_folder.rb index fc991b317..411f623d8 100644 --- a/plugins/commands/serve/client/synced_folder.rb +++ b/plugins/commands/serve/client/synced_folder.rb @@ -26,14 +26,87 @@ module VagrantPlugins # @param [Sdk::Args::Machine] def enable(machine, folders, opts) + folder_proto = folder_proto(folders) + direct_any = direct_opts_proto(opts) + + req = SDK::FuncSpec::Args.new( + args: [ + SDK::FuncSpec::Value.new( + type: "hashicorp.vagrant.sdk.Args.Target.Machine", + value: Google::Protobuf::Any.pack(machine), + ), + SDK::FuncSpec::Value.new( + type: "hashicorp.vagrant.sdk.Args.Folder", + value: Google::Protobuf::Any.pack(folder_proto), + ), + SDK::FuncSpec::Value.new( + name: "", + type: "hashicorp.vagrant.sdk.Args.Direct", + value: Google::Protobuf::Any.pack(direct_any), + ) + ] + ) + client.enable(req) end # @param [Sdk::Args::Machine] def disable(machine, folders, opts) + folders_proto = folder_proto(folders) + direct_any = direct_opts_proto(opts) + + req = SDK::FuncSpec::Args.new( + args: [ + SDK::FuncSpec::Value.new( + type: "hashicorp.vagrant.sdk.Args.Target.Machine", + value: Google::Protobuf::Any.pack(machine), + ), + SDK::FuncSpec::Value.new( + type: "hashicorp.vagrant.sdk.Args.Folder", + value: Google::Protobuf::Any.pack(folders_proto), + ), + SDK::FuncSpec::Value.new( + name: "", + type: "hashicorp.vagrant.sdk.Args.Direct", + value: Google::Protobuf::Any.pack(direct_any), + ) + ] + ) + client.disable(req) end # @param [Sdk::Args::Machine] def cleanup(machine, opts) + direct_any = direct_opts_proto(opts) + + req = SDK::FuncSpec::Args.new( + args: [ + SDK::FuncSpec::Value.new( + type: "hashicorp.vagrant.sdk.Args.Target.Machine", + value: Google::Protobuf::Any.pack(machine), + ), + SDK::FuncSpec::Value.new( + name: "", + type: "hashicorp.vagrant.sdk.Args.Direct", + value: Google::Protobuf::Any.pack(direct_any), + ) + ] + ) + client.cleanup(req) + end + + private + + def folder_proto(folders) + folders_proto = {} + folders.each do |k, v| + folder_proto[k] = mapper.map(v, to: Google::Protobuf::Any) + end + folders_proto + end + + def direct_opts_proto(opts) + direct_proto = Types::Direct.new(arguments: opts) + mapper.map(direct_proto, to: Google::Protobuf::Any) end end end