47c2b6bed9
* Init attempt at tui with bubble tea. Co-authored-by: mcastorina <m.castorina93@gmail.com> * Add starting and source selection options Co-authored-by: mcastorina <m.castorina93@gmail.com> * Rewrite models into a state machine * Update source descriptions * Make subpages implement tea.Model * Rename page0 and page1 to be more descriptive * Adjust styling and adding color consts Co-authored-by: mcastorina <m.castorina93@gmail.com> * Add helper generic function to call Update and type cast * Setup plumbing for source configuration page * Use CLI introspection for source configuration (WIP) * Experiment with table view * Replace table with form fields Co-authored-by: mcastorina <m.castorina93@gmail.com> * Change 🔒 to 💸 * Copy components from soft-serve Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Copy styles from soft-serve Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Copy common from soft-serve Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Refactor into pages This is still a WIP, but the main structure is there. Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Trying out selector for wizard intro Co-authored-by: mcastorina <m.castorina93@gmail.com> * Use selector with custom View Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Change Item to be an enum Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Add link pages Co-authored-by: mcastorina <m.castorina93@gmail.com> * Update source select to use selector Co-authored-by: mcastorina <m.castorina93@gmail.com> * Delete source configure page and add blank tabs Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Add tab placeholder pages for configurationi Co-authored-by: mcastorina <m.castorina93@gmail.com> * Added headers and style to each tab Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Update with new sources * Remove kingpin attribute from SourceItem * Add basic form field and source structuring * Hookup git form fields with an underlying textinput component Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Update forms for git and github Co-authored-by: mcastorina <m.castorina93@gmail.com> * Add labels per text input * Add sources and adjust styling * add basic trufflehog configuration page * Add skip button to textinputs component * Emit and handle textinputs skip/submit button commands * Don't quit when q is pressed on the sourceConfigurePage * Build trufflehog command based on source config vals Co-authored-by: mcastorina <m.castorina93@gmail.com> * Build flags based on truffle config inputs * Update summary section * Add generated truffle fields Co-authored-by: mcastorina <m.castorina93@gmail.com> * update summary to correctly print info * Go back a page when escape key is pressed * WIP run page list Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Allow running trufflehog from the run page Co-authored-by: hxnyk <8292703+hxnyk@users.noreply.github.com> * Add option to view help docs Co-authored-by: mcastorina <m.castorina93@gmail.com> * comment out unused styles and remove unused types * Capitalize H in TruffleHog * remove unneeded fmt.Sprintf --------- Co-authored-by: mcastorina <m.castorina93@gmail.com>
218 lines
2.6 KiB
Go
218 lines
2.6 KiB
Go
package keymap
|
|
|
|
import "github.com/charmbracelet/bubbles/key"
|
|
|
|
// KeyMap is a map of key bindings for the UI.
|
|
type KeyMap struct {
|
|
Quit key.Binding
|
|
CmdQuit key.Binding
|
|
Up key.Binding
|
|
Down key.Binding
|
|
UpDown key.Binding
|
|
LeftRight key.Binding
|
|
Arrows key.Binding
|
|
Select key.Binding
|
|
Section key.Binding
|
|
Back key.Binding
|
|
PrevPage key.Binding
|
|
NextPage key.Binding
|
|
Help key.Binding
|
|
|
|
SelectItem key.Binding
|
|
BackItem key.Binding
|
|
|
|
Copy key.Binding
|
|
}
|
|
|
|
// DefaultKeyMap returns the default key map.
|
|
func DefaultKeyMap() *KeyMap {
|
|
km := new(KeyMap)
|
|
|
|
km.Quit = key.NewBinding(
|
|
key.WithKeys(
|
|
"ctrl+c",
|
|
),
|
|
key.WithHelp(
|
|
"ctrl+c",
|
|
"quit",
|
|
),
|
|
)
|
|
|
|
km.CmdQuit = key.NewBinding(
|
|
key.WithKeys(
|
|
"q",
|
|
"ctrl+c",
|
|
),
|
|
key.WithHelp(
|
|
"q",
|
|
"quit",
|
|
),
|
|
)
|
|
|
|
km.Up = key.NewBinding(
|
|
key.WithKeys(
|
|
"up",
|
|
"k",
|
|
),
|
|
key.WithHelp(
|
|
"↑/k",
|
|
"up",
|
|
),
|
|
)
|
|
|
|
km.Down = key.NewBinding(
|
|
key.WithKeys(
|
|
"down",
|
|
"j",
|
|
),
|
|
key.WithHelp(
|
|
"↓/j",
|
|
"down",
|
|
),
|
|
)
|
|
|
|
km.UpDown = key.NewBinding(
|
|
key.WithKeys(
|
|
"up",
|
|
"down",
|
|
"k",
|
|
"j",
|
|
),
|
|
key.WithHelp(
|
|
"↑↓",
|
|
"navigate",
|
|
),
|
|
)
|
|
|
|
km.LeftRight = key.NewBinding(
|
|
key.WithKeys(
|
|
"left",
|
|
"h",
|
|
"right",
|
|
"l",
|
|
),
|
|
key.WithHelp(
|
|
"←→",
|
|
"navigate",
|
|
),
|
|
)
|
|
|
|
km.Arrows = key.NewBinding(
|
|
key.WithKeys(
|
|
"up",
|
|
"right",
|
|
"down",
|
|
"left",
|
|
"k",
|
|
"j",
|
|
"h",
|
|
"l",
|
|
),
|
|
key.WithHelp(
|
|
"↑←↓→",
|
|
"navigate",
|
|
),
|
|
)
|
|
|
|
km.Select = key.NewBinding(
|
|
key.WithKeys(
|
|
"enter",
|
|
),
|
|
key.WithHelp(
|
|
"enter",
|
|
"select",
|
|
),
|
|
)
|
|
|
|
km.Section = key.NewBinding(
|
|
key.WithKeys(
|
|
"tab",
|
|
"shift+tab",
|
|
),
|
|
key.WithHelp(
|
|
"tab",
|
|
"section",
|
|
),
|
|
)
|
|
|
|
km.Back = key.NewBinding(
|
|
key.WithKeys(
|
|
"esc",
|
|
),
|
|
key.WithHelp(
|
|
"esc",
|
|
"back",
|
|
),
|
|
)
|
|
|
|
km.PrevPage = key.NewBinding(
|
|
key.WithKeys(
|
|
"pgup",
|
|
"b",
|
|
"u",
|
|
),
|
|
key.WithHelp(
|
|
"pgup",
|
|
"prev page",
|
|
),
|
|
)
|
|
|
|
km.NextPage = key.NewBinding(
|
|
key.WithKeys(
|
|
"pgdown",
|
|
"f",
|
|
"d",
|
|
),
|
|
key.WithHelp(
|
|
"pgdn",
|
|
"next page",
|
|
),
|
|
)
|
|
|
|
km.Help = key.NewBinding(
|
|
key.WithKeys(
|
|
"?",
|
|
),
|
|
key.WithHelp(
|
|
"?",
|
|
"toggle help",
|
|
),
|
|
)
|
|
|
|
km.SelectItem = key.NewBinding(
|
|
key.WithKeys(
|
|
"l",
|
|
"right",
|
|
),
|
|
key.WithHelp(
|
|
"→",
|
|
"select",
|
|
),
|
|
)
|
|
|
|
km.BackItem = key.NewBinding(
|
|
key.WithKeys(
|
|
"h",
|
|
"left",
|
|
"backspace",
|
|
),
|
|
key.WithHelp(
|
|
"←",
|
|
"back",
|
|
),
|
|
)
|
|
|
|
km.Copy = key.NewBinding(
|
|
key.WithKeys(
|
|
"c",
|
|
"ctrl+c",
|
|
),
|
|
key.WithHelp(
|
|
"c",
|
|
"copy text",
|
|
),
|
|
)
|
|
|
|
return km
|
|
}
|