github.com/choria-io/go-choria@v0.28.1-0.20240416190746-b3bf9c7d5a45/aagent/plugin/machine.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  	"golang.org/x/text/cases"
    13  	"golang.org/x/text/language"
    14  )
    15  
    16  func NewMachinePlugin(name string, machine any) *MachinePlugin {
    17  	return &MachinePlugin{name: name, machine: machine}
    18  }
    19  
    20  type MachinePlugin struct {
    21  	name    string
    22  	machine any
    23  }
    24  
    25  func (p *MachinePlugin) Name() string {
    26  	return p.name
    27  }
    28  
    29  func (p *MachinePlugin) Machine() any {
    30  	return p.machine
    31  }
    32  
    33  func (p *MachinePlugin) PluginInstance() any {
    34  	return p
    35  }
    36  
    37  func (p *MachinePlugin) PluginVersion() string {
    38  	return build.Version
    39  }
    40  
    41  func (p *MachinePlugin) PluginName() string {
    42  	return fmt.Sprintf("%s Autonomous Agent version %s", cases.Title(language.AmericanEnglish).String(p.name), build.Version)
    43  }
    44  
    45  func (p *MachinePlugin) PluginType() inter.PluginType {
    46  	return inter.MachinePlugin
    47  }