2022-04-25 12:26:36 -05:00

181 lines
5.0 KiB
Ruby

module VagrantPlugins
module CommandServe
class Client
class Communicator < Client
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def ready_func
spec = client.ready_spec(Empty.new)
cb = proc do |args|
client.ready(args).ready
end
[spec, cb]
end
# @param [Vagrant::Machine]
# @return [bool]
def ready(machine)
run_func(machine)
end
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def wait_for_ready_func
spec = client.wait_for_ready_spec(Empty.new)
cb = proc do |args|
client.wait_for_ready(args).ready
end
[spec, cb]
end
# @param [Vagrant::Machine]
# @param [Integer] duration Timeout in seconds.
# @return [Boolean]
def wait_for_ready(machine, time)
run_func(machine, Type::Duration.new(value: time))
end
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def download_func
spec = client.download_spec(Empty.new)
cb = proc do |args|
client.download(args)
end
[spec, cb]
end
# @param [Vagrant::Machine]
# @param [String] remote path
# @param [String] local path
def download(machine, from, to)
from = Pathname.new(from.to_s) if !from.is_a?(Pathname)
to = Pathname.new(to.to_s) if !to.is_a?(Pathname)
run_func(
Type::NamedArgument.new(name: "to", value: to),
Type::NamedArgument.new(name: "from", value: from),
machine
)
end
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def upload_func
spec = client.upload_spec(Empty.new)
cb = proc do |args|
client.upload(args)
end
[spec, cb]
end
# @param [Vagrant::Machine]
# @param [String] local path
# @param [String] remote path
def upload(machine, from, to)
from = Pathname.new(from.to_s) if !from.is_a?(Pathname)
to = Pathname.new(to.to_s) if !to.is_a?(Pathname)
run_func(
Type::NamedArgument.new(name: "source", value: from),
Type::NamedArgument.new(name: "destination", value: to),
machine
)
end
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def execute_func
spec = client.execute_spec(Empty.new)
cb = proc do |args|
client.execute(args)
end
[spec, cb]
end
# @param [Vagrant::Machine]
# @param [String] command to run
# @param [Hash] options
# @return [Integer]
def execute(machine, cmd, opts)
opts = {} if opts.nil?
run_func(machine,
Type::Options.new(value: opts),
Type::CommunicatorCommandArguments.new(value: cmd)
)
end
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def privileged_execute_func
spec = client.privileged_execute_spec(Empty.new)
cb = proc do |args|
client.privileged_execute(args)
end
[spec, cb]
end
# @param [Vagrant::Machine]
# @param [String] command to run
# @param [Hash] options
# @return [Integer]
def privileged_execute(machine, cmd, opts)
opts = {} if opts.nil?
run_func(machine,
Type::Options.new(value: opts),
Type::CommunicatorCommandArguments.new(value: cmd)
)
end
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def test_func
spec = client.test_spec(Empty.new)
cb = proc do |args|
client.test(args).valid
end
[spec, cb]
end
# @param [Vagrant::Machine]
# @param [String] command to run
# @param [Hash] options
# @return [Boolean]
def test(machine, cmd, opts)
opts = {} if opts.nil?
run_func(machine,
Type::Options.new(value: opts),
Type::CommunicatorCommandArguments.new(value: cmd)
)
end
# Generate callback and spec for required arguments
#
# @return [SDK::FuncSpec, Proc]
def reset_func
spec = client.reset_spec(Empty.new)
cb = proc do |args|
client.reset(args)
end
[spec, cb]
end
# Reset the communicator connection
#
# @param machine [Vagrant::Machine] Guest to reset connection on
def reset(machine)
run_func(machine)
end
end
end
end
end