Documentation
¶
Overview ¶
Package plugin defines the core interfaces for Scotter's plugin system
Index ¶
- type CIProvider
- type DefaultPluginLoader
- func (l *DefaultPluginLoader) GetCIProvider(name string) (CIProvider, error)
- func (l *DefaultPluginLoader) GetCIProviders() []CIProvider
- func (l *DefaultPluginLoader) GetLanguageProvider(name string) (LanguageProvider, error)
- func (l *DefaultPluginLoader) GetLanguageProviders() []LanguageProvider
- func (l *DefaultPluginLoader) RegisterCIProvider(provider CIProvider)
- func (l *DefaultPluginLoader) RegisterLanguageProvider(provider LanguageProvider)
- type LanguageProvider
- type PluginLoader
- type TemplateManager
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CIProvider ¶
type CIProvider interface {
// Name returns the CI provider name
Name() string
// SupportedLanguages returns languages supported by this provider
SupportedLanguages() []string
// GenerateWorkflows generates CI workflows for a language and project type
GenerateWorkflows(projectPath, language, projectType string, config map[string]interface{}) error
}
CIProvider is the interface for continuous integration plugins
type DefaultPluginLoader ¶
type DefaultPluginLoader struct {
// contains filtered or unexported fields
}
DefaultPluginLoader is the default implementation of PluginLoader
func NewPluginLoader ¶
func NewPluginLoader() *DefaultPluginLoader
NewPluginLoader creates a new plugin loader
func (*DefaultPluginLoader) GetCIProvider ¶
func (l *DefaultPluginLoader) GetCIProvider(name string) (CIProvider, error)
GetCIProvider retrieves a CI provider by name
func (*DefaultPluginLoader) GetCIProviders ¶
func (l *DefaultPluginLoader) GetCIProviders() []CIProvider
GetCIProviders returns all registered CI providers
func (*DefaultPluginLoader) GetLanguageProvider ¶
func (l *DefaultPluginLoader) GetLanguageProvider(name string) (LanguageProvider, error)
GetLanguageProvider retrieves a language provider by name
func (*DefaultPluginLoader) GetLanguageProviders ¶
func (l *DefaultPluginLoader) GetLanguageProviders() []LanguageProvider
GetLanguageProviders returns all registered language providers
func (*DefaultPluginLoader) RegisterCIProvider ¶
func (l *DefaultPluginLoader) RegisterCIProvider(provider CIProvider)
RegisterCIProvider registers a new CI provider
func (*DefaultPluginLoader) RegisterLanguageProvider ¶
func (l *DefaultPluginLoader) RegisterLanguageProvider(provider LanguageProvider)
RegisterLanguageProvider registers a new language provider
type LanguageProvider ¶
type LanguageProvider interface {
// Name returns the plugin name
Name() string
// SupportedProjectTypes returns project types supported by this language
SupportedProjectTypes() []string
// Initialize initializes a new project
Initialize(projectName, projectType string, config map[string]interface{}) error
// GenerateReleaseScript generates a release script
GenerateReleaseScript(projectPath string, config map[string]interface{}) error
// AddPlatform adds support for a new platform
AddPlatform(projectPath, platform string) error
// AddReleaseAsset adds support for a new release asset type
AddReleaseAsset(projectPath, assetType string) error
// IsSupportedPlatform checks if a platform is supported by this language
IsSupportedPlatform(platform string) bool
// IsSupportedArchitecture checks if an architecture is supported by this language
IsSupportedArchitecture(arch string) bool
// IsSupportedReleaseAsset checks if a release asset type is supported by this language
IsSupportedReleaseAsset(assetType string) bool
// GetSupportedPlatforms returns all supported platforms for this language
GetSupportedPlatforms() []string
// GetSupportedArchitectures returns all supported architectures for this language
GetSupportedArchitectures() []string
// GetSupportedReleaseAssets returns all supported release asset types for this language
GetSupportedReleaseAssets() []string
}
LanguageProvider is the main interface for language plugins
type PluginLoader ¶
type PluginLoader interface {
// RegisterLanguageProvider registers a new language provider
RegisterLanguageProvider(provider LanguageProvider)
// RegisterCIProvider registers a new CI provider
RegisterCIProvider(provider CIProvider)
// GetLanguageProvider retrieves a language provider by name
GetLanguageProvider(name string) (LanguageProvider, error)
// GetCIProvider retrieves a CI provider by name
GetCIProvider(name string) (CIProvider, error)
// GetLanguageProviders returns all registered language providers
GetLanguageProviders() []LanguageProvider
// GetCIProviders returns all registered CI providers
GetCIProviders() []CIProvider
}
PluginLoader handles the registration and management of plugins
type TemplateManager ¶
type TemplateManager interface {
// Filesystem retrieves a filesystem to access templates
Filesystem() fs.FS
// RenderToFile renders a template to a file
RenderToFile(templatePath, targetPath string, data interface{}) error
// RenderToString renders a template as a string
RenderToString(templatePath string, data interface{}) (string, error)
}
TemplateManager is the interface for managing templates