init command
This commit is contained in:
62
main.go
62
main.go
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/zip"
|
"archive/zip"
|
||||||
|
"bufio"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
@@ -22,19 +23,28 @@ import (
|
|||||||
func main() {
|
func main() {
|
||||||
commands := defaultCommands()
|
commands := defaultCommands()
|
||||||
args := os.Args[1:]
|
args := os.Args[1:]
|
||||||
if len(args) > 0 {
|
if len(args) > 0 && args[0] == "--" {
|
||||||
if args[0] == "--" {
|
|
||||||
args = args[1:]
|
args = args[1:]
|
||||||
}
|
}
|
||||||
if len(args) > 0 {
|
|
||||||
if err := runCommandByName(commands, args[0]); err != nil {
|
if len(args) == 0 {
|
||||||
|
printUsage(commands)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if isHelpFlag(args[0]) {
|
||||||
|
printUsage(commands)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if args[0] == "menu" {
|
||||||
|
if err := tea.NewProgram(newModel()).Start(); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if err := tea.NewProgram(newModel()).Start(); err != nil {
|
if err := runCommandByName(commands, args[0]); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -66,6 +76,24 @@ func runCommandByName(commands []command, name string) error {
|
|||||||
return fmt.Errorf("unknown command %q", name)
|
return fmt.Errorf("unknown command %q", name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func printUsage(commands []command) {
|
||||||
|
fmt.Println("Usage: pb <command> [options]")
|
||||||
|
fmt.Println()
|
||||||
|
fmt.Println("Options:")
|
||||||
|
fmt.Println(" -h, --help show this help message")
|
||||||
|
fmt.Println()
|
||||||
|
fmt.Println("Commands:")
|
||||||
|
for _, cmd := range commands {
|
||||||
|
fmt.Printf(" %-10s %s\n", cmd.name, cmd.description)
|
||||||
|
}
|
||||||
|
fmt.Println()
|
||||||
|
fmt.Println("Use \"pb menu\" for an interactive helper.")
|
||||||
|
}
|
||||||
|
|
||||||
|
func isHelpFlag(arg string) bool {
|
||||||
|
return arg == "-h" || arg == "--help"
|
||||||
|
}
|
||||||
|
|
||||||
func newModel() model {
|
func newModel() model {
|
||||||
return model{commands: defaultCommands()}
|
return model{commands: defaultCommands()}
|
||||||
}
|
}
|
||||||
@@ -182,7 +210,11 @@ func runInit() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
serviceName := generateServiceName()
|
defaultName := generateServiceName()
|
||||||
|
serviceName, err := promptServiceName(defaultName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if err := writePBConfig(pbPath, serviceName); err != nil {
|
if err := writePBConfig(pbPath, serviceName); err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -198,7 +230,7 @@ func runInit() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := ensureGitignoreEntries(filepath.Join(cwd, ".gitignore"), []string{"bin/pocketbase", "pb_data"}); err != nil {
|
if err := ensureGitignoreEntries(filepath.Join(cwd, ".gitignore"), []string{"bin/pocketbase", "pb_data", ".env", ".DS_store"}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -261,6 +293,20 @@ func generateServiceName() string {
|
|||||||
return fmt.Sprintf("%s-%s", adjective, noun)
|
return fmt.Sprintf("%s-%s", adjective, noun)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func promptServiceName(defaultName string) (string, error) {
|
||||||
|
reader := bufio.NewReader(os.Stdin)
|
||||||
|
fmt.Printf("Service name [%s]: ", defaultName)
|
||||||
|
input, err := reader.ReadString('\n')
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
input = strings.TrimSpace(input)
|
||||||
|
if input == "" {
|
||||||
|
return defaultName, nil
|
||||||
|
}
|
||||||
|
return input, nil
|
||||||
|
}
|
||||||
|
|
||||||
func pocketbaseBinaryName(goos string) string {
|
func pocketbaseBinaryName(goos string) string {
|
||||||
if goos == "windows" {
|
if goos == "windows" {
|
||||||
return "pocketbase.exe"
|
return "pocketbase.exe"
|
||||||
|
|||||||
Reference in New Issue
Block a user