Files
trufflehog/pkg/tui/keymap/keymap.go
Honandmcastorina 47c2b6bed9
Lint / lint (push) Waiting to run
Release / Release (push) Waiting to run
Scan for secrets / test (push) Waiting to run
Snifftest / Run Snifftest (push) Waiting to run
Test / test (push) Waiting to run
Test / test-detectors (push) Waiting to run
Test / test-community (push) Waiting to run
Add terminal UI (#1593)
* Init attempt at tui with bubble tea.

Co-authored-by: mcastorina <[email protected]>

* Add starting and source selection options

Co-authored-by: mcastorina <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* Change 🔒 to 💸

* Copy components from soft-serve

Co-authored-by: hxnyk <[email protected]>

* Copy styles from soft-serve

Co-authored-by: hxnyk <[email protected]>

* Copy common from soft-serve

Co-authored-by: hxnyk <[email protected]>

* Refactor into pages

This is still a WIP, but the main structure is there.

Co-authored-by: hxnyk <[email protected]>

* Trying out selector for wizard intro

Co-authored-by: mcastorina <[email protected]>

* Use selector with custom View

Co-authored-by: hxnyk <[email protected]>

* Change Item to be an enum

Co-authored-by: hxnyk <[email protected]>

* Add link pages

Co-authored-by: mcastorina <[email protected]>

* Update source select to use selector

Co-authored-by: mcastorina <[email protected]>

* Delete source configure page and add blank tabs

Co-authored-by: hxnyk <[email protected]>

* Add tab placeholder pages for configurationi

Co-authored-by: mcastorina <[email protected]>

* Added headers and style to each tab

Co-authored-by: hxnyk <[email protected]>

* 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 <[email protected]>

* Update forms for git and github

Co-authored-by: mcastorina <[email protected]>

* 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 <[email protected]>

* Build flags based on truffle config inputs

* Update summary section

* Add generated truffle fields

Co-authored-by: mcastorina <[email protected]>

* update summary to correctly print info

* Go back a page when escape key is pressed

* WIP run page list

Co-authored-by: hxnyk <[email protected]>

* Allow running trufflehog from the run page

Co-authored-by: hxnyk <[email protected]>

* Add option to view help docs

Co-authored-by: mcastorina <[email protected]>

* comment out unused styles and remove unused types

* Capitalize H in TruffleHog

* remove unneeded fmt.Sprintf

---------

Co-authored-by: mcastorina <[email protected]>
2023-08-09 13:13:55 -07:00

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
}