// SPDX-License-Identifier: BSD-3-Clause package cli import ( "fmt" "strings" ) // Parse dig-like commands and set the options as such. func ParseDig(arg string, opts *Options) error { // returns true if the flag starts with a no isNo := !strings.HasPrefix(arg, "no") switch arg { // Set DNS query flags case "aa", "aaflag", "aaonly", "noaa", "noaaflag", "noaaonly": opts.AA = isNo case "ad", "adflag", "noad", "noadflag": opts.AD = isNo case "cd", "cdflag", "nocd", "nocdflag": opts.CD = isNo case "qr", "qrflag", "noqr", "noqrflag": opts.QR = isNo case "ra", "raflag", "nora", "noraflag": opts.RA = isNo case "rd", "rdflag", "recurse", "nord", "nordflag", "norecurse": opts.RD = isNo case "tc", "tcflag", "notc", "notcflag": opts.TC = isNo case "z", "zflag", "noz", "nozflag": opts.Z = isNo // End DNS query flags case "dnssec", "nodnssec": opts.DNSSEC = isNo case "tcp", "vc", "notcp", "novc": opts.TCP = isNo case "ignore", "noignore": opts.Truncate = isNo // Formatting case "short", "noshort": opts.Short = isNo case "json", "nojson": opts.JSON = isNo case "xml", "noxml": opts.XML = isNo case "yaml", "noyaml": opts.YAML = isNo // End formatting default: return fmt.Errorf("dig: unknown flag given") } return nil }