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 }