From 40d5063af22e8bcbba02fcff23aef27bea26556b Mon Sep 17 00:00:00 2001 From: Yota Toyama Date: Sat, 18 Nov 2017 13:17:23 +0900 Subject: [PATCH] Create arguments object --- arguments.go | 26 ++++++++++++++++++++++++++ main.go | 34 +++++++++------------------------- 2 files changed, 35 insertions(+), 25 deletions(-) create mode 100644 arguments.go diff --git a/arguments.go b/arguments.go new file mode 100644 index 0000000..7fde176 --- /dev/null +++ b/arguments.go @@ -0,0 +1,26 @@ +package main + +import "github.com/docopt/docopt-go" + +const usage = `Link checker for Markdown and HTML + +Usage: + linkcheck [-v] ... + +Options: + -v, --verbose Be verbose` + +type arguments struct { + filenames []string + verbose bool +} + +func getArgs() (arguments, error) { + args, err := docopt.Parse(usage, nil, true, "linkcheck", true) + + if err != nil { + return arguments{}, err + } + + return arguments{args[""].([]string), args["--verbose"].(bool)}, nil +} diff --git a/main.go b/main.go index 1022e9a..fcf39d0 100644 --- a/main.go +++ b/main.go @@ -4,18 +4,8 @@ import ( "net/url" "os" "time" - - "github.com/docopt/docopt-go" ) -const usage = `Link checker for Markdown and HTML - -Usage: - linkcheck [-v] ... - -Options: - -v, --verbose Be verbose` - func main() { defer func() { if r := recover(); r != nil { @@ -24,8 +14,13 @@ func main() { } }() - args := getArgs() - fs := args[""].([]string) + args, err := getArgs() + + if err != nil { + panic(err) + } + + fs := args.filenames rc := make(chan fileResult, len(fs)) c := newFileChecker(5 * time.Second) @@ -45,12 +40,11 @@ func main() { for i := 0; i < len(fs); i++ { r := <-rc - verbose := args["--verbose"].(bool) if !r.Ok() { ok = false - printToStderr(r.String(verbose)) - } else if r.Ok() && verbose { + printToStderr(r.String(args.verbose)) + } else if r.Ok() && args.verbose { printToStderr(r.String(true)) } } @@ -64,13 +58,3 @@ func isURL(s string) bool { u, err := url.Parse(s) return err == nil && (u.Scheme == "http" || u.Scheme == "https") } - -func getArgs() map[string]interface{} { - args, err := docopt.Parse(usage, nil, true, "linkcheck", true) - - if err != nil { - panic(err) - } - - return args -}