Argo is a simple package designed to parse strings into command-line arguments following the POSIX Shell Command Language.
// cli application
package main
import (
"bufio"
"fmt"
"os"
"strings"
"github.com/notwithering/argo"
)
func main() {
reader := bufio.NewReader(os.Stdin)
for {
fmt.Print(" > ")
in, err := reader.ReadString('\n')
if err != nil {
fmt.Println(err)
return
}
in = strings.TrimSpace(in)
args, incomplete := argo.Parse(in)
if incomplete {
fmt.Println("error: incomplete command")
continue
}
// example output:
// "go", "build", "-ldflags", "-s -w"
fmt.Print("\"")
fmt.Print(strings.Join(args, "\", \""))
fmt.Println("\"")
if len(args) > 0 {
if args[0] == "exit" {
return
}
}
}
}
Argument Go