From 646829a72cb7359dde023b771b7df48e06af07b1 Mon Sep 17 00:00:00 2001 From: Karan Sharma Date: Sun, 13 Dec 2020 21:30:54 +0530 Subject: [PATCH] feat: Parse args which are not flags --- TODO.md | 2 +- cmd/cli.go | 5 ++++- cmd/hub.go | 3 ++- cmd/parse.go | 4 +--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index b8645e9..5a0921c 100644 --- a/TODO.md +++ b/TODO.md @@ -34,7 +34,7 @@ - [ ] Colorize - [ ] Add different commands - [x] Add client transport options -- [ ] Fix an issue while loading free form args, where the same records are being added twice +- [x] Fix an issue while loading free form args, where the same records are being added twice ## Tests diff --git a/cmd/cli.go b/cmd/cli.go index 5c51bc8..1c8ad49 100644 --- a/cmd/cli.go +++ b/cmd/cli.go @@ -32,7 +32,7 @@ func main() { f.StringSliceP("query", "q", []string{}, "Domain name to query") f.StringSliceP("type", "t", []string{}, "Type of DNS record to be queried (A, AAAA, MX etc)") f.StringSliceP("class", "c", []string{}, "Network class of the DNS record to be queried (IN, CH, HS etc)") - f.StringSliceP("nameservers", "n", []string{}, "Address of the nameserver to send packets to") + f.StringSliceP("nameserver", "n", []string{}, "Address of the nameserver to send packets to") // Protocol Options f.BoolP("udp", "U", false, "Use the DNS protocol over UDP") @@ -57,6 +57,9 @@ func main() { f.Usage() hub.Logger.Exit(2) } + + hub.FreeArgs = f.Args() + // set log level if k.Bool("debug") { // Set logger level diff --git a/cmd/hub.go b/cmd/hub.go index 8b2f7ab..f483502 100644 --- a/cmd/hub.go +++ b/cmd/hub.go @@ -11,6 +11,7 @@ type Hub struct { Logger *logrus.Logger Version string QueryFlags QueryFlags + FreeArgs []string Questions []dns.Question Resolver resolvers.Resolver } @@ -20,7 +21,7 @@ type QueryFlags struct { QNames []string `koanf:"query"` QTypes []string `koanf:"type"` QClasses []string `koanf:"class"` - Nameservers []string `koanf:"namserver"` + Nameservers []string `koanf:"nameserver"` IsDOH bool `koanf:"doh"` IsDOT bool `koanf:"dot"` IsUDP bool `koanf:"udp"` diff --git a/cmd/parse.go b/cmd/parse.go index 8a35499..5981e3f 100644 --- a/cmd/parse.go +++ b/cmd/parse.go @@ -1,7 +1,6 @@ package main import ( - "os" "strings" "github.com/miekg/dns" @@ -33,8 +32,7 @@ func (hub *Hub) loadQueryArgs() error { // options. In case an argument isn't able to fit in any of the existing // pattern it is considered to be a "query name". func (hub *Hub) loadFreeArgs() error { - args := os.Args[1:] - for _, arg := range args { + for _, arg := range hub.FreeArgs { if strings.HasPrefix(arg, "--") || strings.HasPrefix(arg, "-") { continue }