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