From 234734061c8ea2e6ff88e3e72b6d41d1e407a6c7 Mon Sep 17 00:00:00 2001 From: Chris Roberts Date: Wed, 20 Apr 2022 14:13:03 -0700 Subject: [PATCH] Add internal interface implementation for managers --- internal/plugin/internal.go | 61 +++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 internal/plugin/internal.go diff --git a/internal/plugin/internal.go b/internal/plugin/internal.go new file mode 100644 index 000000000..d491ace41 --- /dev/null +++ b/internal/plugin/internal.go @@ -0,0 +1,61 @@ +package plugin + +import ( + "github.com/hashicorp/go-argmapper" + "github.com/hashicorp/go-hclog" + "github.com/hashicorp/go-plugin" + "github.com/hashicorp/vagrant-plugin-sdk/internal-shared/cacher" + "github.com/hashicorp/vagrant-plugin-sdk/internal-shared/cleanup" +) + +// Returns value that implements Internal interface +// used by mappers. This allows us to generate clients +// for the managers in a common way. +func NewInternal( + broker *plugin.GRPCBroker, + cache cacher.Cache, + cleanup cleanup.Cleanup, + logger hclog.Logger, + mappers []*argmapper.Func, +) *internal { + return &internal{ + broker: broker, + cache: cache, + cleanup: cleanup, + logger: logger, + mappers: mappers, + } +} + +type internal struct { + broker *plugin.GRPCBroker + cache cacher.Cache + cleanup cleanup.Cleanup + logger hclog.Logger + mappers []*argmapper.Func +} + +// Broker implements Internal +func (i *internal) Broker() *plugin.GRPCBroker { + return i.broker +} + +// Cache implements Internal +func (i *internal) Cache() cacher.Cache { + return i.cache +} + +// Cleanup implements Internal +func (i *internal) Cleanup() cleanup.Cleanup { + return i.cleanup +} + +// Logger implements Internal +func (i *internal) Logger() hclog.Logger { + return i.logger +} + +// Mappers implements Internal +func (i *internal) Mappers() []*argmapper.Func { + return i.mappers +}