]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cypherpunks.ru/nncp/cmd/nncp-reass/main.go
Merge branch 'develop'
[nncp.git] / src / cypherpunks.ru / nncp / cmd / nncp-reass / main.go
index 10024e5e6521d97cd3732a7e8fd64f10ee189992..06549b8426a50f3f9ccfa913926472ad523bdfe4 100644 (file)
@@ -1,6 +1,6 @@
 /*
 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2017 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2018 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -42,8 +42,8 @@ import (
 
 func usage() {
        fmt.Fprintf(os.Stderr, nncp.UsageHeader())
-       fmt.Fprintln(os.Stderr, "nncp-reass -- reassemble chunked files\n")
-       fmt.Fprintf(os.Stderr, "Usage: %s [options] [FILE]\nOptions:\n", os.Args[0])
+       fmt.Fprintf(os.Stderr, "nncp-reass -- reassemble chunked files\n\n")
+       fmt.Fprintf(os.Stderr, "Usage: %s [options] [FILE.nncp.meta]\nOptions:\n", os.Args[0])
        flag.PrintDefaults()
        fmt.Fprint(os.Stderr, `
 Neither FILE, nor -node nor -all can be set simultaneously,
@@ -154,8 +154,7 @@ func process(ctx *nncp.Ctx, path string, keep, dryRun, stdout, dumpMeta bool) bo
                        ctx.LogE("nncp-reass", nncp.SDS{
                                "path":  path,
                                "chunk": strconv.Itoa(chunkNum),
-                               "err":   "checksum is bad",
-                       }, "")
+                       }, "checksum is bad")
                        allChecksumsGood = false
                }
        }
@@ -265,17 +264,19 @@ func findMetas(ctx *nncp.Ctx, dirPath string) []string {
 
 func main() {
        var (
-               cfgPath  = flag.String("cfg", nncp.DefaultCfgPath, "Path to configuration file")
-               allNodes = flag.Bool("all", false, "Process all found chunked files for all nodes")
-               nodeRaw  = flag.String("node", "", "Process all found chunked files for that node")
-               keep     = flag.Bool("keep", false, "Do not remove chunks while assembling")
-               dryRun   = flag.Bool("dryrun", false, "Do not assemble whole file")
-               dumpMeta = flag.Bool("dump", false, "Print decoded human-readable meta FILE")
-               stdout   = flag.Bool("stdout", false, "Output reassembled FILE to stdout")
-               quiet    = flag.Bool("quiet", false, "Print only errors")
-               debug    = flag.Bool("debug", false, "Print debug messages")
-               version  = flag.Bool("version", false, "Print version information")
-               warranty = flag.Bool("warranty", false, "Print warranty information")
+               cfgPath   = flag.String("cfg", nncp.DefaultCfgPath, "Path to configuration file")
+               allNodes  = flag.Bool("all", false, "Process all found chunked files for all nodes")
+               nodeRaw   = flag.String("node", "", "Process all found chunked files for that node")
+               keep      = flag.Bool("keep", false, "Do not remove chunks while assembling")
+               dryRun    = flag.Bool("dryrun", false, "Do not assemble whole file")
+               dumpMeta  = flag.Bool("dump", false, "Print decoded human-readable FILE.nncp.meta")
+               stdout    = flag.Bool("stdout", false, "Output reassembled FILE to stdout")
+               spoolPath = flag.String("spool", "", "Override path to spool")
+               logPath   = flag.String("log", "", "Override path to logfile")
+               quiet     = flag.Bool("quiet", false, "Print only errors")
+               debug     = flag.Bool("debug", false, "Print debug messages")
+               version   = flag.Bool("version", false, "Print version information")
+               warranty  = flag.Bool("warranty", false, "Print warranty information")
        )
        flag.Usage = usage
        flag.Parse()
@@ -288,16 +289,10 @@ func main() {
                return
        }
 
-       cfgRaw, err := ioutil.ReadFile(nncp.CfgPathFromEnv(cfgPath))
+       ctx, err := nncp.CtxFromCmdline(*cfgPath, *spoolPath, *logPath, *quiet, *debug)
        if err != nil {
-               log.Fatalln("Can not read config:", err)
+               log.Fatalln("Error during initialization:", err)
        }
-       ctx, err := nncp.CfgParse(cfgRaw)
-       if err != nil {
-               log.Fatalln("Can not parse config:", err)
-       }
-       ctx.Quiet = *quiet
-       ctx.Debug = *debug
 
        var nodeOnly *nncp.Node
        if *nodeRaw != "" {