Documentation ¶
Index ¶
- Constants
- Variables
- func Ago(now, t time.Time) string
- func Breadcrumbs(title string, res resource.Resource, crumbs ...string) string
- func CmdHandler(msg tea.Msg) tea.Cmd
- func NavigateTo(kind Kind, opts ...NavigateOption) tea.Cmd
- func NewCacheKey(page Page) cacheKey
- func OpenEditor(path string) tea.Cmd
- func ReportError(err error) tea.Cmd
- func ReportInfo(msg string, args ...any) tea.Cmd
- func YesNoPrompt(prompt string, action tea.Cmd) tea.Cmd
- type Cache
- type ErrorMsg
- type FilterBlurMsg
- type FilterCloseMsg
- type FilterFocusReqMsg
- type FilterKeyMsg
- type Helpers
- func (h *Helpers) CreateTasks(cmd string, fn task.Func, ids ...resource.ID) tea.Cmd
- func (h *Helpers) CurrentWorkspaceName(workspaceID *resource.ID) string
- func (h *Helpers) GroupReport(group *task.Group, table bool) string
- func (h *Helpers) LatestRunReport(r *run.Run, table bool) string
- func (h *Helpers) Module(res resource.Resource) *module.Module
- func (h *Helpers) ModuleCurrentResourceCount(mod *module.Module) string
- func (h *Helpers) ModuleCurrentWorkspace(mod *module.Module) *workspace.Workspace
- func (h *Helpers) ModulePath(res resource.Resource) string
- func (h *Helpers) Move(workspaceID resource.ID, from state.ResourceAddress) tea.Cmd
- func (h *Helpers) RunReport(report run.Report, table bool) string
- func (h *Helpers) TaskStatus(t *task.Task, background bool) string
- func (h *Helpers) TaskWorkspace(t *task.Task) (resource.Resource, bool)
- func (h *Helpers) WorkspaceCurrentCheckmark(ws *workspace.Workspace) string
- func (h *Helpers) WorkspaceName(res resource.Resource) string
- func (h *Helpers) WorkspaceResourceCount(ws *workspace.Workspace) string
- type InfoMsg
- type Kind
- type Maker
- type ModelHelpBindings
- type ModelStatus
- type ModelTitle
- type ModuleService
- type NavigateOption
- type NavigationMsg
- type Page
- type Prompt
- type PromptAction
- type PromptMsg
- type RunService
- type StateService
- type TaskService
- type Viewport
- type ViewportOptions
- type WorkspaceService
Constants ¶
const ( Black = lipgloss.Color("#000000") DarkRed = lipgloss.Color("#FF0000") Red = lipgloss.Color("#FF5353") Purple = lipgloss.Color("135") Orange = lipgloss.Color("214") Yellow = lipgloss.Color("#DBBD70") Green = lipgloss.Color("34") LightGreen = lipgloss.Color("86") DarkGreen = lipgloss.Color("#325451") GreenBlue = lipgloss.Color("#00A095") DeepBlue = lipgloss.Color("39") LightBlue = lipgloss.Color("81") Blue = lipgloss.Color("63") Violet = lipgloss.Color("13") Grey = lipgloss.Color("#737373") LightGrey = lipgloss.Color("245") LighterGrey = lipgloss.Color("250") EvenLighterGrey = lipgloss.Color("253") DarkGrey = lipgloss.Color("#606362") White = lipgloss.Color("#ffffff") OffWhite = lipgloss.Color("#a8a7a5") )
const PromptHeight = 3
Height of prompt including borders
Variables ¶
var ( DebugLogLevel = Blue InfoLogLevel = lipgloss.AdaptiveColor{Dark: string(LightGreen), Light: string(Green)} ErrorLogLevel = Red WarnLogLevel = Yellow LogRecordAttributeKey = lipgloss.AdaptiveColor{Dark: string(White), Light: string(Black)} HelpKey = lipgloss.AdaptiveColor{ Dark: "ff", Light: "", } HelpDesc = lipgloss.AdaptiveColor{ Dark: "248", Light: "246", } InactivePreviewBorder = lipgloss.AdaptiveColor{ Dark: "244", Light: "250", } CurrentBackground = Grey CurrentForeground = White SelectedBackground = lipgloss.Color("110") SelectedForeground = Black CurrentAndSelectedBackground = lipgloss.Color("117") CurrentAndSelectedForeground = Black TitleColor = lipgloss.AdaptiveColor{ Dark: "", Light: "", } RunReportBackgroundColor = EvenLighterGrey GroupReportBackgroundColor = EvenLighterGrey ScrollPercentageBackground = lipgloss.AdaptiveColor{ Dark: string(DarkGrey), Light: string(EvenLighterGrey), } )
var ( Regular = lipgloss.NewStyle() Bold = Regular.Copy().Bold(true) Padded = Regular.Copy().Padding(0, 1) Faint = Regular.Copy().Faint(true) Width = lipgloss.Width Height = lipgloss.Height Border = Regular.Copy().Border(lipgloss.NormalBorder()) ThickBorder = Regular.Copy().Border(lipgloss.ThickBorder()).BorderForeground(Violet) Title = Padded.Copy().Foreground(White).Background(Purple) TitleCommand = Padded.Copy().Foreground(White).Background(Blue) TitlePath = Padded.Copy().Foreground(White).Background(modulePathColor) TitleWorkspace = Padded.Copy().Foreground(White).Background(Green) TitleID = Padded.Copy().Foreground(White).Background(Green) TitleAddress = Padded.Copy().Foreground(White).Background(Blue) TitleSerial = Padded.Copy().Foreground(White).Background(Orange) TitleTainted = Padded.Copy().Foreground(White).Background(Red) RunReportStyle = Padded.Copy().Background(EvenLighterGrey) )
Functions ¶
func Breadcrumbs ¶ added in v0.2.0
func NavigateTo ¶
func NavigateTo(kind Kind, opts ...NavigateOption) tea.Cmd
NavigateTo sends an instruction to navigate to a page with the given model kind, and optionally parent resource.
func NewCacheKey ¶ added in v0.2.0
func NewCacheKey(page Page) cacheKey
func OpenEditor ¶ added in v0.2.0
func ReportError ¶
Types ¶
type Cache ¶ added in v0.2.0
type Cache struct {
// contains filtered or unexported fields
}
page Cache: not so much for performance but to retain memory of user actions, e.g. a user may select a particular row in a table, navigate away from the page and later return to the page, and they would expect the same row still to be selected.
type FilterBlurMsg ¶ added in v0.1.9
type FilterBlurMsg struct{}
FilterBlurMsg is a request to unfocus the filter widget. It is not acknowledged.
type FilterCloseMsg ¶ added in v0.1.9
type FilterCloseMsg struct{}
FilterCloseMsg is a request to close the filter widget. It is not acknowledged.
type FilterFocusReqMsg ¶ added in v0.1.9
type FilterFocusReqMsg struct{}
FilterFocusReqMsg is a request to focus the filter widget.
type FilterKeyMsg ¶ added in v0.1.9
FilterKeyMsg is a key entered by the user into the filter widget
type Helpers ¶
type Helpers struct { ModuleService ModuleService WorkspaceService WorkspaceService RunService RunService TaskService TaskService StateService StateService Logger logging.Interface }
Helper methods for easily surfacing info in the TUI.
TODO: leverage a cache to enhance performance, particularly if we introduce sqlite at some stage. These helpers are invoked on every render, which for a table with, say 40 visible rows, means they are invoked 40 times a render, which is 40 lookups.
func (*Helpers) CreateTasks ¶ added in v0.2.0
func (*Helpers) CurrentWorkspaceName ¶
func (*Helpers) GroupReport ¶ added in v0.2.0
RunReport renders a colored summary of a run's changes. Set table to true if the report is rendered within a table row.
func (*Helpers) ModuleCurrentResourceCount ¶ added in v0.1.10
func (*Helpers) ModuleCurrentWorkspace ¶ added in v0.2.0
func (*Helpers) RunReport ¶
RunReport renders a colored summary of a run's changes. Set table to true if the report is rendered within a table row.
func (*Helpers) TaskStatus ¶ added in v0.2.0
TaskStatus provides a rendered colored task status.
func (*Helpers) TaskWorkspace ¶ added in v0.2.0
TaskWorkspace retrieves either the task's workspace if it belongs to a workspace, or if it belongs to a module, then it retrieves the module's current workspace
func (*Helpers) WorkspaceCurrentCheckmark ¶
WorkspaceCurrentCheckmark returns a check mark if the workspace is the current workspace for its module.
type Kind ¶
type Kind int
func FirstPageKind ¶
FirstPageKind retrieves the model corresponding to the user requested first page.
type ModelHelpBindings ¶
ModelHelpBindings is implemented by models that surface further help bindings specific to the model.
type ModelStatus ¶
type ModelStatus interface {
Status() string
}
ModelID is implemented by models that are able to provide a unique identification string.
type ModelTitle ¶
type ModelTitle interface {
Title() string
}
ModelTitle is implemented by models that show a title
type ModuleService ¶
type ModuleService interface { Get(id resource.ID) (*module.Module, error) List() []*module.Module Reload() ([]string, []string, error) Init(moduleID resource.ID) (*task.Task, error) Format(moduleID resource.ID) (*task.Task, error) Validate(moduleID resource.ID) (*task.Task, error) SetCurrent(moduleID, workspaceID resource.ID) error }
type NavigateOption ¶
type NavigateOption func(msg *NavigationMsg)
func WithParent ¶
func WithParent(parent resource.Resource) NavigateOption
type NavigationMsg ¶
type NavigationMsg struct {}
NavigationMsg is an instruction to navigate to a page.
func NewNavigationMsg ¶
func NewNavigationMsg(kind Kind, opts ...NavigateOption) NavigationMsg
type Page ¶
type Page struct { // The model kind. Identifies the model maker to construct the page. Kind Kind // The model's resource. In the case of global listings, this is the global // resource. For all other listings, this is the parent resource of the // listed resources. Resource resource.Resource }
Page identifies an instance of a model
type Prompt ¶ added in v0.1.10
type Prompt struct {
// contains filtered or unexported fields
}
Prompt is a widget that prompts the user for input and triggers an action.
func (*Prompt) HandleBlink ¶ added in v0.1.10
HandleBlink handles the bubbletea blink message.
func (*Prompt) HandleKey ¶ added in v0.1.10
HandleKey handles the user key press, and returns a command to be run, and whether the prompt should be closed.
func (*Prompt) HelpBindings ¶ added in v0.1.10
type PromptAction ¶ added in v0.1.10
type PromptMsg ¶ added in v0.1.10
type PromptMsg struct { // Prompt to display to the user. Prompt string // Set initial value for the user to edit. InitialValue string // Action to carry out when key is pressed. Action PromptAction // Key that when pressed triggers the action and closes the prompt. Key key.Binding // Cancel is a key that when pressed skips the action and closes the prompt. Cancel key.Binding // CancelAnyOther, if true, checks if any key other than that specified in // Key is pressed. If so then the action is skipped and the prompt is // closed. Overrides Cancel key binding. CancelAnyOther bool }
PromptMsg enables the prompt widget.
type RunService ¶
type RunService interface { Get(id resource.ID) (*run.Run, error) List(opts run.ListOptions) []*run.Run Plan(workspaceID resource.ID, opts run.CreateOptions) (*task.Task, error) ApplyOnly(workspaceID resource.ID, opts run.CreateOptions) (*task.Task, error) ApplyPlan(runID resource.ID) (*task.Task, error) }
type StateService ¶
type StateService interface { Reload(workspaceID resource.ID) (*task.Task, error) Get(workspaceID resource.ID) (*state.State, error) Delete(workspaceID resource.ID, addrs ...state.ResourceAddress) (*task.Task, error) Taint(workspaceID resource.ID, addr state.ResourceAddress) (*task.Task, error) Untaint(workspaceID resource.ID, addr state.ResourceAddress) (*task.Task, error) Move(workspaceID resource.ID, src, dest state.ResourceAddress) (*task.Task, error) }
type TaskService ¶
type TaskService interface { CreateGroup(cmd string, fn task.Func, ids ...resource.ID) (*task.Group, error) Retry(taskID resource.ID) (*task.Task, error) Counter() int Get(taskID resource.ID) (*task.Task, error) List(opts task.ListOptions) []*task.Task ListGroups() []*task.Group Cancel(taskID resource.ID) (*task.Task, error) }
type Viewport ¶ added in v0.2.0
type Viewport struct { Autoscroll bool // contains filtered or unexported fields }
Viewport is a wrapper of the upstream viewport bubble.
func NewViewport ¶ added in v0.2.0
func NewViewport(opts ViewportOptions) Viewport