generated from templates/go-generic
fix: update prompt string plus some refactoring
- Updated the prompt string. - Move the main package to cmd/pokecli. - Added a loop function in the main repl function.
This commit is contained in:
parent
0f5826a7de
commit
23d6ddbdc8
5 changed files with 43 additions and 32 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1 @@
|
|||
pokecli
|
||||
/pokecli
|
||||
|
|
5
cmd/pokecli/main.go
Normal file
5
cmd/pokecli/main.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package main
|
||||
|
||||
func main() {
|
||||
repl()
|
||||
}
|
|
@ -3,7 +3,6 @@ package main
|
|||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"maps"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -18,11 +17,7 @@ type command struct {
|
|||
callback commands.CommandFunc
|
||||
}
|
||||
|
||||
func main() {
|
||||
run()
|
||||
}
|
||||
|
||||
func run() {
|
||||
func repl() {
|
||||
var (
|
||||
cacheCleanupInterval = 30 * time.Minute
|
||||
httpTimeout = 10 * time.Second
|
||||
|
@ -80,52 +75,46 @@ func run() {
|
|||
callback: commands.HelpFunc(summaries),
|
||||
}
|
||||
|
||||
fmt.Printf("\nWelcome to the Pokedex!\n")
|
||||
fmt.Print("\npokedex > ")
|
||||
|
||||
scanner := bufio.NewScanner(os.Stdin)
|
||||
|
||||
for scanner.Scan() {
|
||||
loopFunc := func() {
|
||||
defer printPrompt()
|
||||
|
||||
input := scanner.Text()
|
||||
|
||||
command, args := parseArgs(input)
|
||||
command, args := parseInput(input)
|
||||
|
||||
cmd, ok := commandMap[command]
|
||||
if !ok {
|
||||
fmt.Println("ERROR: Unrecognised command.")
|
||||
|
||||
fmt.Print("\npokedex > ")
|
||||
|
||||
continue
|
||||
return
|
||||
}
|
||||
|
||||
if cmd.callback == nil {
|
||||
fmt.Println("ERROR: This command is defined but does not have a callback function.")
|
||||
|
||||
fmt.Print("\npokedex > ")
|
||||
|
||||
continue
|
||||
return
|
||||
}
|
||||
|
||||
if err := commandMap[command].callback(args); err != nil {
|
||||
fmt.Printf("ERROR: %v.\n", err)
|
||||
}
|
||||
|
||||
fmt.Print("pokedex > ")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func summaryMap(commandMap map[string]command) map[string]string {
|
||||
summaries := make(map[string]string)
|
||||
fmt.Printf("\nWelcome to the Pokemon world!\n")
|
||||
printPrompt()
|
||||
|
||||
for key, value := range maps.All(commandMap) {
|
||||
summaries[key] = value.description
|
||||
for scanner.Scan() {
|
||||
loopFunc()
|
||||
}
|
||||
}
|
||||
|
||||
return summaries
|
||||
}
|
||||
|
||||
func parseArgs(input string) (string, []string) {
|
||||
func parseInput(input string) (string, []string) {
|
||||
input = strings.TrimSpace(input)
|
||||
input = strings.ToLower(input)
|
||||
split := strings.Split(input, " ")
|
||||
|
||||
if len(split) == 0 {
|
||||
|
@ -138,3 +127,7 @@ func parseArgs(input string) (string, []string) {
|
|||
|
||||
return split[0], split[1:]
|
||||
}
|
||||
|
||||
func printPrompt() {
|
||||
fmt.Print("pokecli > ")
|
||||
}
|
13
cmd/pokecli/summaries.go
Normal file
13
cmd/pokecli/summaries.go
Normal file
|
@ -0,0 +1,13 @@
|
|||
package main
|
||||
|
||||
import "maps"
|
||||
|
||||
func summaryMap(commandMap map[string]command) map[string]string {
|
||||
summaries := make(map[string]string)
|
||||
|
||||
for key, value := range maps.All(commandMap) {
|
||||
summaries[key] = value.description
|
||||
}
|
||||
|
||||
return summaries
|
||||
}
|
|
@ -56,7 +56,7 @@ func Lint() error {
|
|||
// To rebuild packages that are already up-to-date set POKECLI_BUILD_REBUILD_ALL=1
|
||||
// To enable verbose mode set POKECLI_BUILD_VERBOSE=1
|
||||
func Build() error {
|
||||
main := "main.go"
|
||||
path := "./cmd/" + app
|
||||
flags := ldflags()
|
||||
build := sh.RunCmd("go", "build")
|
||||
args := []string{"-ldflags=" + flags, "-o", binary}
|
||||
|
@ -69,7 +69,7 @@ func Build() error {
|
|||
args = append(args, "-v")
|
||||
}
|
||||
|
||||
args = append(args, main)
|
||||
args = append(args, path)
|
||||
|
||||
return build(args...)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue