40 lines
721 B
Go
40 lines
721 B
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: BUSL-1.1
|
|
|
|
package core
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/hashicorp/vagrant-plugin-sdk/core"
|
|
)
|
|
|
|
type closer interface {
|
|
Closer(func() error)
|
|
}
|
|
|
|
// Seed value into plugin as a typed value. This is generally used
|
|
// for adding a target or machine to the seeds of a non-cacheable
|
|
// plugin
|
|
func seedPlugin(
|
|
plugin interface{}, // plugin which implements core.Seeder
|
|
seed interface{}, // value to seed
|
|
) (err error) {
|
|
s, ok := plugin.(core.Seeder)
|
|
if !ok {
|
|
return fmt.Errorf("component does not implement core.Seeder")
|
|
}
|
|
seeds, err := s.Seeds()
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
seeds.AddTyped(seed)
|
|
|
|
if err = s.Seed(seeds); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|