Documentation ¶
Index ¶
- type BotInstance
- type BotState
- type KelpOS
- func (kos *KelpOS) Background(userID string, namespace string, cmd string) (*Process, error)
- func (kos *KelpOS) Blocking(userID string, namespace string, cmd string) ([]byte, error)
- func (kos *KelpOS) BotDataForUser(user *User) *UserBotData
- func (kos *KelpOS) GetBinDir() *OSPath
- func (kos *KelpOS) GetDotKelpWorkingDir() *OSPath
- func (kos *KelpOS) GetProcess(userID string, namespace string) (*Process, bool)
- func (kos *KelpOS) Mkdir(userID string, dirPath *OSPath) error
- func (kos *KelpOS) RegisteredProcesses() []string
- func (kos *KelpOS) SafeUnregister(userID string, namespace string)
- func (kos *KelpOS) SetSilentRegistrations()
- func (kos *KelpOS) Stop(userID string, namespace string) error
- func (kos *KelpOS) StreamOutput(command *exec.Cmd) error
- func (kos *KelpOS) Unregister(userID string, namespace string) error
- type OSPath
- func (o *OSPath) AsString() string
- func (o *OSPath) IsRelative() bool
- func (o *OSPath) Join(elem ...string) *OSPath
- func (o *OSPath) JoinRelPath(relPaths ...*OSPath) (*OSPath, error)
- func (o *OSPath) MakeFromNativePath(targetNativePath string) (*OSPath, error)
- func (o *OSPath) MakeFromUnixPath(targetUnixPath string) (*OSPath, error)
- func (o *OSPath) Native() string
- func (o *OSPath) RelFromPath(basepath *OSPath) (*OSPath, error)
- func (o *OSPath) String() string
- func (o *OSPath) Unix() string
- type Process
- type User
- type UserBotData
- func (ubd *UserBotData) AdvanceBotState(botName string, expectedCurrentState BotState) error
- func (ubd *UserBotData) GetBot(botName string) (*BotInstance, error)
- func (ubd *UserBotData) QueryBotState(botName string) (BotState, error)
- func (ubd *UserBotData) RegisterBot(bot *model2.Bot) error
- func (ubd *UserBotData) RegisterBotWithState(bot *model2.Bot, state BotState) error
- func (ubd *UserBotData) RegisterBotWithStateUpsert(bot *model2.Bot, state BotState)
- func (ubd *UserBotData) RegisteredBots() []string
- func (ubd *UserBotData) SafeUnregisterBot(botName string)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BotInstance ¶
BotInstance is an instance of a given bot along with the metadata
type KelpOS ¶
type KelpOS struct {
// contains filtered or unexported fields
}
KelpOS is a struct that manages all subprocesses started by this Kelp process
func (*KelpOS) Background ¶
Background runs the provided bash command in the background and registers the command
func (*KelpOS) BotDataForUser ¶
func (kos *KelpOS) BotDataForUser(user *User) *UserBotData
BotDataForUser gets the UserBotData for a given user
func (*KelpOS) GetDotKelpWorkingDir ¶
GetDotKelpWorkingDir accessor
func (*KelpOS) GetProcess ¶
GetProcess gets the process tied to the provided namespace
func (*KelpOS) RegisteredProcesses ¶
RegisteredProcesses returns the list of registered processes
func (*KelpOS) SafeUnregister ¶
SafeUnregister ignores erros when unregistering the command at the provided namespace
func (*KelpOS) SetSilentRegistrations ¶
func (kos *KelpOS) SetSilentRegistrations()
SetSilentRegistrations does not log every time we register and unregister commands
func (*KelpOS) StreamOutput ¶
StreamOutput runs the provided command in a streaming fashion
type OSPath ¶
type OSPath struct {
// contains filtered or unexported fields
}
OSPath encapsulates the pair of the native path (i.e. windows or unix) and the unix path this allows certain commands which are unix-specific to have access to the path instead of running transformations
func MakeOsPathBase ¶
MakeOsPathBase is a factory method for the OSPath struct based on the current binary's directory
func (*OSPath) AsString ¶
AsString produces a string representation and we intentionally don't use the Stringer API because this can mistakenly be used in place of a string path which will produce hidden runtime errors which is dangerous
func (*OSPath) IsRelative ¶
IsRelative returns true if this is a relative path, otherwise false
func (*OSPath) Join ¶
Join makes a new OSPath struct by modifying the internal path representations together
func (*OSPath) JoinRelPath ¶
JoinRelPath makes a new OSPath struct by modifying the internal path representations together
func (*OSPath) MakeFromNativePath ¶
MakeFromNativePath returns a new OSPath at the passed in native path string by using the existing OSPath
func (*OSPath) MakeFromUnixPath ¶
MakeFromUnixPath returns a new OSPath at the passed in unix path string by using the existing OSPath
func (*OSPath) RelFromPath ¶
RelFromPath returns a *OSPath that is relative from the provided path
type Process ¶
type Process struct { Cmd *exec.Cmd Stdin io.WriteCloser Stdout io.ReadCloser }
Process contains all the pieces that can be used to control a given process
type User ¶
type User struct { // for now this is just userID, but later this may be expanded to become host:userID (UUID) for example ID string }
User is a struct that represents a user
type UserBotData ¶
type UserBotData struct {
// contains filtered or unexported fields
}
UserBotData represents the Bot registration map and other items related to a given user
func (*UserBotData) AdvanceBotState ¶
func (ubd *UserBotData) AdvanceBotState(botName string, expectedCurrentState BotState) error
AdvanceBotState advances the state of the given bot atomically, ensuring the bot is currently at the expected state
func (*UserBotData) GetBot ¶
func (ubd *UserBotData) GetBot(botName string) (*BotInstance, error)
GetBot fetches the bot state for the given name
func (*UserBotData) QueryBotState ¶
func (ubd *UserBotData) QueryBotState(botName string) (BotState, error)
QueryBotState checks to see if the bot is actually running and returns the state accordingly
func (*UserBotData) RegisterBot ¶
func (ubd *UserBotData) RegisterBot(bot *model2.Bot) error
RegisterBot registers a new bot, returning an error if one already exists with the same name
func (*UserBotData) RegisterBotWithState ¶
func (ubd *UserBotData) RegisterBotWithState(bot *model2.Bot, state BotState) error
RegisterBotWithState registers a new bot with a given state, returning an error if one already exists with the same name
func (*UserBotData) RegisterBotWithStateUpsert ¶
func (ubd *UserBotData) RegisterBotWithStateUpsert(bot *model2.Bot, state BotState)
RegisterBotWithStateUpsert registers a new bot with a given state, it always registers the bot even if it is already registered, never returning an error
func (*UserBotData) RegisteredBots ¶
func (ubd *UserBotData) RegisteredBots() []string
RegisteredBots returns the list of registered bots
func (*UserBotData) SafeUnregisterBot ¶
func (ubd *UserBotData) SafeUnregisterBot(botName string)
SafeUnregisterBot unregister a bot without any errors