plugin

package
v0.0.0-...-2661439 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 29, 2025 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Package plugin defines the core interfaces for Scotter's plugin system

Index

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL