bin/sekka-jisyo in sekka-0.9.1 vs bin/sekka-jisyo in sekka-0.9.2

- old
+ new

@@ -63,27 +63,51 @@ (define (dump-sekka-jisyo sekka-file) (dump-sekka-jisyo-f STDOUT sekka-file)) +(define (restore-sekka-jisyo tsv-file target) + (with-open + tsv-file + (lambda (f) + (restore-sekka-jisyo-f + f + target)))) + + (define (display-help) (print "Usage : ") - (print " sekka-jisyo convert SKK-JISYO.X > SEKKA-JISYO.X ... output SEKKA-JISYO to STDOUT") - (print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.tch ... load SEKKA-JISYO to Tokyo Cabinet DB") - (print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.db ... load SEKKA-JISYO to ndbm DB") - (print " sekka-jisyo dump SEKKA-JISYO.X.tch ... dump Tokyo Cabinet DB to SEKKA-JISYO(STDOUT)") - (print " sekka-jisyo dump SEKKA-JISYO.X.db ... dump ndbm DB to SEKKA-JISYO(STDOUT)")) + (print " sekka-jisyo convert SKK-JISYO.X > SEKKA-JISYO.X ... output SEKKA-JISYO to STDOUT") + (print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.tch ... load SEKKA-JISYO to Tokyo Cabinet DB") + (print " sekka-jisyo load SEKKA-JISYO.X SEKKA-JISYO.X.db ... load SEKKA-JISYO to ndbm DB") + (print " sekka-jisyo load SEKKA-JISYO.X redis:[hostname] ... load SEKKA-JISYO to redis DB on [hostname]") + (print " sekka-jisyo load SEKKA-JISYO.X redis: ... load SEKKA-JISYO to redis DB on localhost") + (print " sekka-jisyo dump SEKKA-JISYO.X.tch ... dump Tokyo Cabinet DB to DUMPDATA(STDOUT)") + (print " sekka-jisyo dump SEKKA-JISYO.X.db ... dump ndbm to DUMPDATA(STDOUT)") + (print " sekka-jisyo dump redis:[hostname] ... dump redis DB on [hostname] to DUMPDATA(STDOUT)") + (print " sekka-jisyo dump redis: ... dump redis DB on localhost to DUMPDATE(STDOUT)") + (print " sekka-jisyo restore SEKKA-JISYO.X.tsv redis:[hostname] ... restore redis DB on [hostname] from tsv-file") + (print " sekka-jisyo restore SEKKA-JISYO.X.tsv redis: ... restore redis DB on localhost from tsv-file")) + (define (analyze-kvs-type filename) (cond ((rxmatch #/[.]tch$/ filename) - 'tokyocabinet) + (values 'tokyocabinet filename)) ((rxmatch #/[.]db$/ filename) - 'dbm) + (values 'dbm filename)) + ((rxmatch #/^redis:(.*)$/ filename) + => (lambda (m) + (let1 str (rxmatch-substring m 1) + (let1 hostname (if (< 0 (str.size)) + str + "localhost") + (values 'redis hostname))))) (else (errorf "Error: analyze-kvs-type() got unsupported filename [%s] \n" filename)))) + (define (main argv) (cond ((= 0 (length argv)) (display-help)) (else @@ -93,19 +117,31 @@ (if (< (length argv) 2) (display-help) (convert-skk-jisyo (second argv)))) ((eq? 'load command) (let1 filename (third argv) - (set-kvs-type (analyze-kvs-type filename)) - (if (< (length argv) 3) - (display-help) - (load-sekka-jisyo (second argv) filename)))) + (receive (type param) + (analyze-kvs-type filename) + (set-kvs-type type) + (if (< (length argv) 3) + (display-help) + (load-sekka-jisyo (second argv) param))))) ((eq? 'dump command) (let1 filename (second argv) - (set-kvs-type (analyze-kvs-type filename)) - (if (< (length argv) 2) - (display-help) - (dump-sekka-jisyo filename)))) + (receive (type param) + (analyze-kvs-type filename) + (set-kvs-type type) + (if (< (length argv) 2) + (display-help) + (dump-sekka-jisyo param))))) + ((eq? 'restore command) + (if (< (length argv) 3) + (display-help) + (let1 target (third argv) + (receive (type hostname) + (analyze-kvs-type target) + (set-kvs-type type) + (restore-sekka-jisyo (second argv) hostname))))) (else (errorf "Error: no such command [%s] \n" command ))))))) (main *argv*) ;;END-OF-SCRIPT