github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/providers/data/plugin/plugin.go (about)

     1  // Copyright (c) 2021-2022, R.I. Pienaar and the Choria Project contributors
     2  //
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package plugin
     6  
     7  import (
     8  	"fmt"
     9  
    10  	"github.com/choria-io/go-choria/build"
    11  	"github.com/choria-io/go-choria/inter"
    12  	"github.com/choria-io/go-choria/providers/data"
    13  	"golang.org/x/text/cases"
    14  	"golang.org/x/text/language"
    15  )
    16  
    17  type DataPlugin struct {
    18  	Name    string
    19  	Creator *data.Creator
    20  }
    21  
    22  func NewDataPlugin(name string, creator func(fw data.Framework) (data.Plugin, error)) *DataPlugin {
    23  	return &DataPlugin{Name: name, Creator: &data.Creator{Name: name, F: creator}}
    24  }
    25  
    26  // PluginInstance implements plugin.Pluggable
    27  func (p *DataPlugin) PluginInstance() any {
    28  	return p.Creator
    29  }
    30  
    31  // PluginVersion implements plugin.Pluggable
    32  func (p *DataPlugin) PluginVersion() string {
    33  	return build.Version
    34  }
    35  
    36  // PluginName implements plugin.Pluggable
    37  func (p *DataPlugin) PluginName() string {
    38  	return fmt.Sprintf("%s Data version %s", cases.Title(language.AmericanEnglish).String(p.Name), build.Version)
    39  }
    40  
    41  // PluginType implements plugin.Pluggable
    42  func (p *DataPlugin) PluginType() inter.PluginType {
    43  	return inter.DataPlugin
    44  }