get.porter.sh/porter@v1.3.0/pkg/plugins/pkgmgmt.go (about) 1 package plugins 2 3 import ( 4 "get.porter.sh/porter/pkg/config" 5 "get.porter.sh/porter/pkg/pkgmgmt" 6 "get.porter.sh/porter/pkg/pkgmgmt/client" 7 ) 8 9 const ( 10 Directory = "plugins" 11 ) 12 13 var _ PluginProvider = &PackageManager{} 14 15 type PackageManager struct { 16 *client.FileSystem 17 } 18 19 func NewPackageManager(c *config.Config) *PackageManager { 20 client := PackageManager{ 21 FileSystem: client.NewFileSystem(c, Directory), 22 } 23 24 client.BuildMetadata = func() pkgmgmt.PackageMetadata { 25 return &Metadata{} 26 } 27 28 return &client 29 } 30 31 var _ pkgmgmt.PackageMetadata = Metadata{} 32 33 // Metadata about an installed plugin. 34 type Metadata struct { 35 pkgmgmt.Metadata `json:",inline" yaml:",inline"` 36 Implementations []Implementation `json:"implementations" yaml:"implementations"` 37 } 38 39 // Implementation stores implementation type (e.g. storage) and its name (e.g. 40 // s3, mongo) 41 type Implementation struct { 42 Type string `json:"type" yaml:"type"` 43 Name string `json:"implementation" yaml:"name"` 44 }