launchr

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Jun 10, 2024 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Overview

Package launchr provides common app functionality.

Index

Constants

View Source
const PkgPath = "github.com/launchrctl/launchr"

PkgPath is a main module path.

Variables

View Source
var (
	ErrNoConfigFile = errors.New("config file is not found") // ErrNoConfigFile when config file doesn't exist in FS.
)

Functions

func EnsurePath

func EnsurePath(parts ...string) error

EnsurePath creates all directories in the path.

func GetFsAbsPath

func GetFsAbsPath(fs fs.FS) string

GetFsAbsPath returns absolute path for a FS struct.

func GetTypePkgPathName added in v0.1.0

func GetTypePkgPathName(v interface{}) (string, string)

GetTypePkgPathName returns type package path and name for internal usage.

func InitPluginInfo added in v0.1.0

func InitPluginInfo(pi *PluginInfo, p Plugin)

InitPluginInfo sets private fields for internal usage only.

func InitServiceInfo added in v0.1.0

func InitServiceInfo(si *ServiceInfo, s Service)

InitServiceInfo sets private fields for internal usage only.

func RegisterPlugin added in v0.1.0

func RegisterPlugin(p Plugin)

RegisterPlugin add a plugin to global pull.

Types

type App added in v0.1.0

type App interface {
	// Name returns app name.
	Name() string
	// GetWD provides app's working dir.
	GetWD() string
	// Streams returns application cli.
	Streams() cli.Streams
	// AddService registers a service in the app.
	// Panics if a service is not unique.
	AddService(s Service)
	// GetService retrieves a service of type v and assigns it to v.
	// Panics if a service is not found.
	GetService(v interface{})

	GetPluginAssets(p Plugin) fs.FS
	// RegisterFS registers a File System in launchr.
	// It may be a FS for action discovery, see action.DiscoveryFS.
	RegisterFS(fs ManagedFS)
	// GetRegisteredFS returns an array of registered File Systems.
	GetRegisteredFS() []ManagedFS
}

App stores global application state.

type AppVersion added in v0.1.0

type AppVersion struct {
	Name        string
	Version     string
	OS          string
	Arch        string
	BuiltWith   string
	CoreVersion string
	CoreReplace string
	Plugins     []string
}

AppVersion stores application version.

func NewVersion added in v0.1.0

func NewVersion(name, ver, bwith string, plugins PluginsMap) *AppVersion

NewVersion creates version info with used plugins info.

func Version added in v0.1.0

func Version() *AppVersion

Version provides app version info.

func (*AppVersion) Full added in v0.1.0

func (v *AppVersion) Full() string

Full outputs version string in a full format.

func (*AppVersion) Short added in v0.1.0

func (v *AppVersion) Short() string

Short outputs a short version string.

func (*AppVersion) String added in v0.2.1

func (v *AppVersion) String() string

String implements Stringer interface.

type CobraPlugin added in v0.1.0

type CobraPlugin interface {
	Plugin
	// CobraAddCommands is a hook called when cobra root command is available.
	// Plugins may register its command line commands here.
	CobraAddCommands(*cobra.Command) error
}

CobraPlugin is an interface to implement a plugin for cobra.

type Config added in v0.1.0

type Config interface {
	Service
	// DirPath returns an absolute path to config directory.
	DirPath() string
	// Path provides an absolute path to launchr config directory.
	Path(parts ...string) string
	// EnsurePath creates all directories in the path.
	EnsurePath(parts ...string) error
	// Get returns a value by key to a parameter v. Parameter v must be a pointer to a value.
	// Error may be returned on decode.
	Get(key string, v interface{}) error
}

Config is a launchr config storage interface.

func ConfigFromFS added in v0.1.0

func ConfigFromFS(root fs.FS) Config

ConfigFromFS parses launchr app config directory and its content.

type ConfigAware added in v0.1.0

type ConfigAware interface {
	// SetLaunchrConfig sets a launchr config to the struct.
	SetLaunchrConfig(Config)
}

ConfigAware provides an interface for structs to support launchr configuration setting.

type GeneratePlugin added in v0.1.0

type GeneratePlugin interface {
	Plugin
	// Generate is a function called when application is generating code and assets for the build.
	Generate(buildPath string, workDir string) (*PluginGeneratedData, error)
}

GeneratePlugin is an interface to generate supporting files before build.

type ManagedFS added in v0.5.5

type ManagedFS interface {
	fs.FS
	FS() fs.FS
}

ManagedFS is a common interface for FS registered in launchr.

type OnAppInitPlugin added in v0.1.0

type OnAppInitPlugin interface {
	Plugin
	// OnAppInit is hook function called on application initialisation.
	// Plugins may save app global object, retrieve or provide services here.
	OnAppInit(app App) error
}

OnAppInitPlugin is an interface to implement a plugin for app initialisation.

type Plugin added in v0.1.0

type Plugin interface {
	// PluginInfo requests a type to provide information about the plugin.
	PluginInfo() PluginInfo
}

Plugin is a common interface for launchr plugins.

type PluginGeneratedData added in v0.1.0

type PluginGeneratedData struct {
	Plugins []string
}

PluginGeneratedData is a struct containing a result information of plugin generation.

type PluginInfo added in v0.1.0

type PluginInfo struct {
	// Weight defines the order of plugins calling. @todo rework to a real dependency resolving.
	Weight int
	// contains filtered or unexported fields
}

PluginInfo provides information about the plugin and is used as a unique data to indentify a plugin.

func (PluginInfo) GetPackagePath added in v0.9.0

func (p PluginInfo) GetPackagePath() string

GetPackagePath returns the package path of the PluginInfo.

func (PluginInfo) String added in v0.1.0

func (p PluginInfo) String() string

type PluginManager added in v0.1.0

type PluginManager interface {
	Service
	All() PluginsMap
}

PluginManager handles plugins.

func NewPluginManagerWithRegistered added in v0.1.0

func NewPluginManagerWithRegistered() PluginManager

NewPluginManagerWithRegistered creates PluginManager with registered plugins.

type PluginsMap added in v0.1.0

type PluginsMap = map[PluginInfo]Plugin

PluginsMap is a type alias for plugins map.

type Service

type Service interface {
	ServiceInfo() ServiceInfo
}

Service is a common interface for a service to register.

type ServiceInfo

type ServiceInfo struct {
	// contains filtered or unexported fields
}

ServiceInfo provides service info for its initialization.

func (ServiceInfo) String added in v0.1.0

func (s ServiceInfo) String() string

Jump to

Keyboard shortcuts

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