Add project caching in mapper

This commit is contained in:
Chris Roberts 2021-11-17 14:56:09 -08:00 committed by Paul Hinze
parent c3fb475abe
commit b7c04b4ecc
No known key found for this signature in database
GPG Key ID: B69DEDF2D55501C0

View File

@ -25,12 +25,18 @@ module VagrantPlugins
inputs = [].tap do |i|
i << Input.new(type: SDK::Args::Project)
i << Input.new(type: Broker)
i << Input.new(type: Util::Cacher)
end
super(inputs: inputs, output: Client::Project, func: method(:converter))
end
def converter(proto, broker)
Client::Project.load(proto, broker: broker)
def converter(proto, broker, cacher)
cid = proto.target.to_s if proto.target.to_s != ""
return cacher[cid] if cid && cacher.registered?(cid)
project = Client::Project.load(proto, broker: broker)
cacher[cid] = project if cid
project
end
end