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  }