diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..7d39c7c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "zero-epwing"] + path = zero-epwing + url = https://github.com/FooSoft/zero-epwing diff --git a/bin/linux/zero-epwing b/bin/linux/zero-epwing index 91393bd..0e1d772 100755 Binary files a/bin/linux/zero-epwing and b/bin/linux/zero-epwing differ diff --git a/bin/windows/zero-epwing.exe b/bin/windows/zero-epwing.exe index 85e817a..d045aae 100644 Binary files a/bin/windows/zero-epwing.exe and b/bin/windows/zero-epwing.exe differ diff --git a/main.go b/main.go index 0bb13f8..4d1f735 100644 --- a/main.go +++ b/main.go @@ -23,6 +23,7 @@ package main import ( + "bufio" "errors" "flag" "fmt" @@ -31,6 +32,7 @@ import ( "net/http" "os" "path" + "strings" ) func usage() { @@ -75,38 +77,70 @@ func main() { flag.Usage = usage flag.Parse() - if flag.NArg() != 1 && flag.NArg() != 2 { - usage() - os.Exit(2) - } + var ( + interactive bool + inputPath string + outputDir string + ) - inputPath := flag.Arg(0) - if *format == "" { - if *format = detectFormat(inputPath); *format == "" { - log.Fatal("failed to detect dictionary format") + if flag.NArg() == 0 { + fmt.Print("Specify path of dictionary to convert: ") + + reader := bufio.NewReader(os.Stdin) + inputPath, _ = reader.ReadString('\n') + inputPath = strings.Replace(inputPath, "\n", "", -1) + interactive = true + + fmt.Print("\n") + } else { + inputPath = flag.Arg(0) + if flag.NArg() > 1 { + outputDir = flag.Arg(1) } } - var outputDir string - if flag.NArg() == 2 { - outputDir = flag.Arg(1) - } else { + terminate := func() { + if interactive { + fmt.Print("\nPress [ENTER] to terminate...") + reader := bufio.NewReader(os.Stdin) + reader.ReadString('\n') + } + + os.Exit(1) + } + + if _, err := os.Stat(inputPath); err != nil { + log.Printf("dictionary path '%s' does not exist", inputPath) + terminate() + } + + if *format == "" { + if *format = detectFormat(inputPath); *format == "" { + log.Print("failed to detect dictionary format") + terminate() + } + } + + if outputDir == "" { var err error outputDir, err = ioutil.TempDir("", "yomichan_tmp_") if err != nil { - log.Fatal(err) + log.Print(err) + terminate() } *serve = true } if err := exportDb(inputPath, outputDir, *format, *title, *stride, *pretty); err != nil { - log.Fatal(err) + log.Print(err) + terminate() } if *serve { if err := serveDb(outputDir, *port); err != nil { - log.Fatal(err) + log.Print(err) + terminate() } } } diff --git a/zero-epwing b/zero-epwing new file mode 160000 index 0000000..82158b0 --- /dev/null +++ b/zero-epwing @@ -0,0 +1 @@ +Subproject commit 82158b0104880d462d47d5a27108cfc31f00208c