X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/bfcd32beb41fcba2a5120ab899a080aef8305160..b9c5339d113c63ffc3d8a7c6bf1019616bb3f89a:/lib/deduplicationreport/report.go diff --git a/lib/deduplicationreport/report.go b/lib/deduplicationreport/report.go index 8bb3fc4e57..bb3405a493 100644 --- a/lib/deduplicationreport/report.go +++ b/lib/deduplicationreport/report.go @@ -10,7 +10,6 @@ import ( "io" "strings" - "git.arvados.org/arvados.git/lib/config" "git.arvados.org/arvados.git/sdk/go/arvados" "git.arvados.org/arvados.git/sdk/go/arvadosclient" "git.arvados.org/arvados.git/sdk/go/manifest" @@ -30,7 +29,7 @@ func deDuplicate(inputs []string) (trimmed []string) { return } -func parseFlags(prog string, args []string, loader *config.Loader, logger *logrus.Logger, stderr io.Writer) (exitcode int, inputs []string) { +func parseFlags(prog string, args []string, logger *logrus.Logger, stderr io.Writer) ([]string, error) { flags := flag.NewFlagSet("", flag.ContinueOnError) flags.SetOutput(stderr) flags.Usage = func() { @@ -60,38 +59,36 @@ Example: arv collection list --order 'file_size_total desc' --limit 100 | \ jq -r '.items[] | [.portable_data_hash,.uuid] |@csv' | \ - tail -n+2 |sed -e 's/"//g'|tr '\n' ' ' | \ + sed -e 's/"//g'|tr '\n' ' ' | \ xargs %s Options: `, prog, prog, prog) flags.PrintDefaults() } - loader.SetupFlags(flags) loglevel := flags.String("log-level", "info", "logging level (debug, info, ...)") err := flags.Parse(args) if err == flag.ErrHelp { - return 0, inputs + return nil, err } else if err != nil { - return 2, inputs + return nil, err } - inputs = flags.Args() + inputs := flags.Args() inputs = deDuplicate(inputs) if len(inputs) < 1 { - logger.Errorf("Error: no collections provided") - flags.Usage() - return 2, inputs + err = fmt.Errorf("Error: no collections provided") + return inputs, err } lvl, err := logrus.ParseLevel(*loglevel) if err != nil { - return 2, inputs + return inputs, err } logger.SetLevel(lvl) - return + return inputs, err } func blockList(collection arvados.Collection) (blocks map[string]int) { @@ -104,12 +101,16 @@ func blockList(collection arvados.Collection) (blocks map[string]int) { return } -func report(prog string, args []string, loader *config.Loader, logger *logrus.Logger, stdout, stderr io.Writer) (exitcode int) { - +func report(prog string, args []string, logger *logrus.Logger, stdout, stderr io.Writer) (exitcode int) { var inputs []string - exitcode, inputs = parseFlags(prog, args, loader, logger, stderr) - if exitcode != 0 { - return + var err error + + inputs, err = parseFlags(prog, args, logger, stderr) + if err == flag.ErrHelp { + return 0 + } else if err != nil { + logger.Error(err.Error()) + return 2 } // Arvados Client setup