1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- package init
- import (
- "fmt"
- tea "github.com/charmbracelet/bubbletea"
- )
- type category struct {
- cursor int
- }
- var categories = []string{
- "tool",
- "model",
- "extension",
- }
- func newCategory() category {
- return category{
- // default category is tool
- cursor: 0,
- }
- }
- func (c category) Category() string {
- return categories[c.cursor]
- }
- func (c category) View() string {
- s := "Select the type of plugin you want to create\n"
- for i, category := range categories {
- if i == c.cursor {
- s += fmt.Sprintf("\033[32m-> %s\033[0m\n", category)
- } else {
- s += fmt.Sprintf(" %s\n", category)
- }
- }
- return s
- }
- func (c category) Update(msg tea.Msg) (subMenu, subMenuEvent, tea.Cmd) {
- switch msg := msg.(type) {
- case tea.KeyMsg:
- switch msg.String() {
- case "ctrl+c", "q":
- return c, SUB_MENU_EVENT_NONE, tea.Quit
- case "j", "down":
- c.cursor++
- if c.cursor >= len(categories) {
- c.cursor = len(categories) - 1
- }
- case "k", "up":
- c.cursor--
- if c.cursor < 0 {
- c.cursor = 0
- }
- case "enter":
- if c.cursor != 0 {
- c.cursor = 0
- return c, SUB_MENU_EVENT_NONE, nil
- }
- return c, SUB_MENU_EVENT_NEXT, nil
- }
- }
- return c, SUB_MENU_EVENT_NONE, nil
- }
- func (c category) Init() tea.Cmd {
- return nil
- }
|