From 7ab060d70dc75f448195d44c253f623d65949de7 Mon Sep 17 00:00:00 2001 From: sophia Date: Tue, 27 Apr 2021 15:00:55 -0500 Subject: [PATCH] Save --- internal/core/basis.go | 46 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/internal/core/basis.go b/internal/core/basis.go index d4d4963ae..b642ec188 100644 --- a/internal/core/basis.go +++ b/internal/core/basis.go @@ -134,6 +134,51 @@ func (b *Basis) Environment() *Environment { return b.env } +func (b *Basis) initHosts(ctx context.Context) error { + f := b.factories[component.HostType] + for _, name := range f.Registered() { + if name != "myplugin" { + continue + } + h, err := componentCreatorMap[component.HostType].Create(context.Background(), b, name) + if err != nil { + return err + } + detected, err := b.callDynamicFunc( + ctx, + b.logger, + (interface{})(nil), + h, + h.Value.(component.Host).DetectFunc(), + ) + if detected.(bool) == false { + return err + } + hasCap, err := b.callDynamicFunc( + ctx, + b.logger, + (interface{})(nil), + h, + h.Value.(component.Host).HasCapabilityFunc(), + argmapper.Typed("write_hello"), + ) + if hasCap.(bool) { + _, err := b.callDynamicFunc( + ctx, + b.logger, + (interface{})(nil), + h, + h.Value.(component.Host).CapabilityFunc("write_hello"), + argmapper.Typed(b.UI), + ) + if err != nil { + return err + } + } + } + return nil +} + func (b *Basis) Init() (result *vagrant_server.Job_InitResult, err error) { b.logger.Debug("running init for basis") f := b.factories[component.CommandType] @@ -141,6 +186,7 @@ func (b *Basis) Init() (result *vagrant_server.Job_InitResult, err error) { Commands: []*vagrant_server.Job_Command{}, } ctx := context.Background() + b.initHosts(ctx) for _, name := range f.Registered() { var cmd *Component