From 949c92af353aa36b78e55d125b64c40d036e52d7 Mon Sep 17 00:00:00 2001 From: itchyny Date: Wed, 8 Jan 2020 00:34:15 +0900 Subject: [PATCH] implement mmv cli base --- cmd/mmv/main.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/cmd/mmv/main.go b/cmd/mmv/main.go index f5ce850..bd889b0 100644 --- a/cmd/mmv/main.go +++ b/cmd/mmv/main.go @@ -1,7 +1,65 @@ package main -import "fmt" +import ( + "flag" + "fmt" + "os" + "runtime" + + "github.com/itchyny/mmv" +) + +const name = "mmv" + +const version = "0.0.0" + +var revision = "HEAD" func main() { - fmt.Print("mmv") + os.Exit(run(os.Args[1:])) +} + +const ( + exitCodeOK = iota + exitCodeErr +) + +func run(args []string) int { + fs := flag.NewFlagSet(name, flag.ContinueOnError) + fs.SetOutput(os.Stderr) + fs.Usage = func() { + fs.SetOutput(os.Stdout) + fmt.Printf(`%[1]s - rename multiple files with editor + +Version: %s (rev: %s/%s) + +Synopsis: + %% %[1]s files ... + +Options: +`, name, version, revision, runtime.Version()) + fs.PrintDefaults() + } + var showVersion bool + fs.BoolVar(&showVersion, "v", false, "print version") + if err := fs.Parse(args); err != nil { + if err == flag.ErrHelp { + return exitCodeOK + } + return exitCodeErr + } + if showVersion { + fmt.Printf("%s %s (rev: %s/%s)\n", name, version, revision, runtime.Version()) + return exitCodeOK + } + args = fs.Args() + if len(args) == 0 { + fmt.Printf("usage: %s files ...\n", name) + return exitCodeErr + } + if err := mmv.Rename(nil); err != nil { + fmt.Fprintf(os.Stderr, "%s: %s\n", name, err) + return exitCodeErr + } + return exitCodeOK }