implement mmv cli base

This commit is contained in:
itchyny 2020-01-08 00:34:15 +09:00
parent 5515f2c87a
commit 949c92af35

View file

@ -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
}