init command
This commit is contained in:
62
main.go
62
main.go
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"archive/zip"
|
||||
"bufio"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
@@ -22,19 +23,28 @@ import (
|
||||
func main() {
|
||||
commands := defaultCommands()
|
||||
args := os.Args[1:]
|
||||
if len(args) > 0 {
|
||||
if args[0] == "--" {
|
||||
if len(args) > 0 && args[0] == "--" {
|
||||
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)
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if err := tea.NewProgram(newModel()).Start(); err != nil {
|
||||
if err := runCommandByName(commands, args[0]); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
@@ -66,6 +76,24 @@ func runCommandByName(commands []command, name string) error {
|
||||
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 {
|
||||
return model{commands: defaultCommands()}
|
||||
}
|
||||
@@ -182,7 +210,11 @@ func runInit() error {
|
||||
return err
|
||||
}
|
||||
|
||||
serviceName := generateServiceName()
|
||||
defaultName := generateServiceName()
|
||||
serviceName, err := promptServiceName(defaultName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := writePBConfig(pbPath, serviceName); err != nil {
|
||||
return err
|
||||
@@ -198,7 +230,7 @@ func runInit() error {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -261,6 +293,20 @@ func generateServiceName() string {
|
||||
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 {
|
||||
if goos == "windows" {
|
||||
return "pocketbase.exe"
|
||||
|
||||
Reference in New Issue
Block a user