menus

package
v1.46.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 7, 2026 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Generate = Menu{
	Title: "generate",
	Items: []Item{
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "air" },
			Choice: search.Choice{Id: "air", Description: "air binaries, a live reload program for Go apps"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ air"))
				return generations.Air(generations.AirOptions{Air: *app.Air})
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "air-config" },
			Choice: search.Choice{Id: "air-config", Description: "air configuration file air.toml"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ air config"))
				if err = generations.AirConfig(generations.AirConfigOptions{
					Efs: app.Efs,
				}); err != nil {
					return
				}
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "bun" },
			Choice: search.Choice{Id: "bun", Description: "bun binaries, a fast javascript all-in-one toolkit"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ bun"))
				err = generations.Bun(generations.BunOptions{Bun: *app.Bun})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "sqlc" },
			Choice: search.Choice{Id: "sqlc", Description: "sqlc binaries, a sql compiler written in go"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ sqlc"))
				err = generations.Sqlc(generations.SqlcOptions{Sqlc: *app.Sqlc})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "migration" },
			Choice: search.Choice{Id: "migration", Description: "migration file named using the current date and time"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ migration"))
				err = generations.Migration(generations.MigrationOptions{
					Sqlc:     *app.Sqlc,
					Strict:   *app.Strict,
					SqlcYaml: *app.SqlcYaml,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "types" },
			Choice: search.Choice{Id: "types", Description: "typescript type definitions from go types"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ types"))
				err = generations.Types(generations.TypesOptions{
					Go:   *app.Go,
					Tags: *app.Tags,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "queries" },
			Choice: search.Choice{Id: "queries", Description: "go functions from your query file using sqlc"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ queries"))
				err = generations.Queries(generations.QueriesOptions{
					Strict:   *app.Strict,
					Sqlc:     *app.Sqlc,
					SqlcYaml: *app.SqlcYaml,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "snapshot" },
			Choice: search.Choice{Id: "snapshot", Description: "generates static pages, data and assets"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ snapshot"))
				err = generations.Snapshot(generations.SnapshotOptions{
					StaticsUrl: value,
					Strict:     *app.Strict,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "core" },
			Choice: search.Choice{Id: "core", Description: "core package"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ core"))
				err = generations.Core(generations.CoreOptions{
					Efs:    app.Efs,
					Strict: *app.Strict,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "icons" },
			Choice: search.Choice{Id: "icons", Description: "icons components"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("generate ▷ icons"))
				err = generations.Icons(generations.IconsOptions{
					Strict: *app.Strict,
					Bun:    *app.Bun,
					Efs:    app.Efs,
				})
				return
			},
		},
		{
			Hidden: true,
			Choice: search.Choice{Id: "render generate menu"},
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return true },
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				if *app.Strict {
					err = actions.Help(actions.HelpOptions{})
					return
				}
				for {
					if _, err = Render(menu, app, value, query); err != nil {
						return
					}
				}
			},
		},
	},
}
View Source
var Main = Menu{
	Title: "main",
	Items: []Item{
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"create", "c"}, value)
			},
			Choice: search.Choice{Id: "create project", Description: "creates a new project"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ create project"))
				err = actions.CreateProject(actions.CreateProjectOptions{
					Strict: *app.Strict,
					Efs:    app.Efs,
					Name:   value,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"dev", "d"}, value)
			},
			Choice: search.Choice{Id: "dev", Description: "runs air and vite in parallel"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ dev"))
				err = actions.Dev(actions.DevOptions{
					Go:  *app.Go,
					Air: *app.Air,
					Bun: *app.Bun,
					Efs: app.Efs,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "configure" },
			Choice: search.Choice{Id: "configure", Description: "generates binaries, installs packages and creates app/dist"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ configure"))
				err = actions.Configure(actions.ConfigureOptions{
					Go:   *app.Go,
					Air:  *app.Air,
					Bun:  *app.Bun,
					Tags: *app.Tags,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"install", "i"}, value)
			},
			Choice: search.Choice{Id: "install", Description: "installs packages"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ install"))
				err = actions.Install(actions.InstallOptions{
					Go:  *app.Go,
					Bun: *app.Bun,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"update", "u"}, value)
			},
			Choice: search.Choice{Id: "update", Description: "updates packages"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ update"))
				err = actions.Update(actions.UpdateOptions{
					Go:  *app.Go,
					Bun: *app.Bun,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "add" },
			Choice: search.Choice{Id: "add", Description: "adds packages"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ add"))
				if *app.Strict {
					err = errors.New("adding packages in strict mode is not allowed")
					return
				}
				err = actions.Npm(actions.NpmOptions{Bun: *app.Bun})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"build", "b"}, value)
			},
			Choice: search.Choice{Id: "build", Description: "builds project"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ build"))
				err = actions.Build(actions.BuildOptions{
					Go:     *app.Go,
					Bun:    *app.Bun,
					Tags:   *app.Tags,
					Output: *app.Output,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"prebuild"}, value)
			},
			Choice: search.Choice{Id: "prebuild", Description: "executes the ./pre project"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ prebuild"))
				err = actions.PreBuild(actions.PreBuildOptions{
					Go:   *app.Go,
					Tags: *app.Tags,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"postbuild"}, value)
			},
			Choice: search.Choice{Id: "postbuild", Description: "executes the ./post project"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ postbuild"))
				err = actions.PostBuild(actions.PostBuildOptions{
					Go:   *app.Go,
					Tags: *app.Tags,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"package", "p"}, value)
			},
			Choice: search.Choice{Id: "package", Description: "packages app"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ package"))
				err = actions.Package(actions.PackageOptions{
					Go:  *app.Go,
					Bun: *app.Bun,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "package-watch" },
			Choice: search.Choice{Id: "package-watch", Description: "watches app and packages it"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ package-watch"))
				err = actions.PackageWatch(actions.PackageWatchOptions{Bun: *app.Bun})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"generate", "g"}, value)
			},
			Choice: search.Choice{Id: "generate", Description: "generates code and resources"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				_, err = Activate(&Generate, app, append([]string{value}, query...))
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "asm" },
			Choice: search.Choice{Id: "assembly explorer", Description: "starts the assembly explorer"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ assembly explorer"))
				err = actions.AssemblyExplorer(actions.AssemblyExplorerOptions{
					Go:   *app.Go,
					Bun:  *app.Bun,
					Tags: *app.Tags,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "migrate" },
			Choice: search.Choice{Id: "migrate", Description: "migrates database schema"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ migrate"))
				err = actions.Migrate(actions.MigrateOptions{
					Query:    value,
					Strict:   *app.Strict,
					SqlcYaml: *app.SqlcYaml,
					Database: *app.Database,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "check" },
			Choice: search.Choice{Id: "check", Description: "checks for code errors"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ check"))
				err = actions.Check(actions.CheckOptions{
					Bun:         *app.Bun,
					Incremental: *app.Incremental,
				})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"format", "f"}, value)
			},
			Choice: search.Choice{Id: "format", Description: "formats svelte and go code"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ format"))
				return actions.Format(actions.FormatOptions{
					Go:  *app.Go,
					Bun: *app.Bun,
				})
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "clean" },
			Choice: search.Choice{Id: "clean", Description: "deletes .gen, .vite, app/{dist,node_modules}"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ clean project"))
				err = actions.CleanProject(actions.CleanProjectOptions{Go: *app.Go})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "reset" },
			Choice: search.Choice{Id: "reset", Description: "deletes global cache"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ reset"))
				err = actions.Reset(actions.ResetOptions{})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "clear" },
			Choice: search.Choice{Id: "clear", Description: "clears terminal screen"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ clear"))
				err = actions.Clear(actions.ClearOptions{})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "lock-packages" },
			Choice: search.Choice{Id: "lock packages", Description: "locks js packages to the current exact version"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ lock packages"))
				err = actions.LockPackages(actions.LockPackagesOptions{})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "test" },
			Choice: search.Choice{Id: "test", Description: "runts tests"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ test"))
				err = actions.Test(actions.TestOptions{
					Go:  *app.Go,
					Bun: *app.Bun,
				})
				return
			},
		},
		{
			Hidden: true,
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return value == "welcome" },
			Choice: search.Choice{Id: "welcome", Description: "shows a welcome message and yields without killing the process"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ welcome"))
				err = actions.Welcome(actions.WelcomeOptions{})
				return
			},
		},
		{
			Active: func(menu *Menu, app apps.App, value string, query []string) bool {
				return slices.Contains([]string{"version", "v"}, value)
			},
			Choice: search.Choice{Id: "version", Description: "shows binary version"},
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				fmt.Print(configs.Styles.Menu.PaddingRight(1).Render("⎚"))
				fmt.Println(configs.Styles.Menu.Render("running ▷ version"))
				err = actions.Version(actions.VersionOptions{Efs: app.Efs})
				return
			},
		},
		{
			Hidden: true,
			Choice: search.Choice{Id: "render main menu"},
			Active: func(menu *Menu, app apps.App, value string, query []string) bool { return true },
			Handle: func(menu *Menu, app apps.App, value string, query []string) (err error) {
				if *app.Strict {
					err = actions.Help(actions.HelpOptions{})
					return
				}
				var data []byte
				if data, err = app.Efs.ReadFile("logo.txt"); err != nil {
					return
				}
				fmt.Println(configs.Styles.BigText.PaddingLeft(1).PaddingRight(1).Render(string(data)))
				for {
					if _, err = Render(menu, app, value, query); err != nil {
						return
					}
				}
			},
		},
	},
}

Functions

func Activate added in v1.46.0

func Activate(menu *Menu, app apps.App, args []string) (id string, err error)

func Render added in v1.46.0

func Render(menu *Menu, app apps.App, value string, query []string) (id string, err error)

Types

type Item

type Item struct {
	Hidden bool
	Choice search.Choice
	Active func(menu *Menu, app apps.App, value string, query []string) (active bool)
	Handle func(menu *Menu, app apps.App, value string, query []string) (err error)
}
type Menu struct {
	Title string
	Items []Item
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL