package gistatic import ( "flag" "fmt" "io" "os" g "gobang" ) type argsT struct{ outputPath string cloneUrl string allArgs []string } func usage(argv0 string, w io.Writer) { fmt.Fprintf( w, "Usage: %s [-o DIRECTORY] [-u CLONE_URL] REPOSITORY", argv0, ) } func getopt(allArgs []string, w io.Writer) (argsT, int) { argv0 := allArgs[0] argv := allArgs[1:] fs := flag.NewFlagSet("", flag.ContinueOnError) fs.Usage = func() {} fs.SetOutput(w) outputPath := fs.String( "o", g.Must(os.Getwd()), "The directory where to write the generated files", ) cloneUrl := fs.String( "u", "", "The prefix of the online cloning addresss", ) if fs.Parse(argv) != nil { usage(argv0, w) return argsT{}, 2 } subArgs := fs.Args() if len(subArgs) == 0 { fmt.Fprintf(w, "Missing DIRECTORY.\n") usage(argv0, w) return argsT{}, 2 } return argsT{ outputPath: *outputPath, cloneUrl: *cloneUrl, allArgs: allArgs, }, 0 } func run(args argsT, stdin io.Reader, stdout io.Writer, stderr io.Writer) int { return 0 } func Main() { g.Init() args, rc := getopt(os.Args, os.Stderr) if rc != 0 { os.Exit(rc) } os.Exit(run(args, os.Stdin, os.Stdout, os.Stderr)) }