id = "doggo" name = "doggo" homepage = "https://doggo.mrkaran.dev" description = "doggo is a modern command-line DNS client (like dig) written in Golang, supporting DoH, DoT, DoQ and DNSCrypt." # The project's own mark, the SVG favicon of its documentation site. icon = "https://raw.githubusercontent.com/mr-karan/doggo/main/docs/public/favicon.svg" executables = ["doggo"] [dotfiles] # README, "Configuration": "Defaults for any flag can be set via a TOML config # file", shown as "# ~/.config/doggo/config.toml (or # $XDG_CONFIG_HOME/doggo/config.toml, ~/.doggo.toml)" — the first two are the # config home under both names, which is [configHome]. paths = ["[configHome]/doggo/config.toml", "~/.doggo.toml"] exclude = [] # Query defaults only; doggo authenticates to nothing. secret = [] # Loaded once per invocation, below the environment and the command line. side_effect = false # No machine_lines: the keys are flag defaults (strategy, timeout, colour, # resolver list) a user wants everywhere, not facts about one host. [commands] format = 1 label = "DNS lookup" description = "Query DNS records with doggo. Flags for DNS-over-HTTPS and rarely used header bits are left out." quality = "ai-draft" base = "fig:doggo" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false } [[commands.source]] id = "fig" kind = "completion" url = "https://github.com/withfig/autocomplete/blob/master/src/doggo.ts" license = "MIT" [[commands.field]] id = "names" label = "Domain names" type = "string" position = 0 multiple = true sources = ["fig"] [[commands.field]] id = "type" label = "Record type" type = "string" option = ["--type", "-t"] suggestions = [{ value = "A", label = "A" }, { value = "AAAA", label = "AAAA" }, { value = "MX", label = "MX" }, { value = "NS", label = "NS" }, { value = "TXT", label = "TXT" }, { value = "CNAME", label = "CNAME" }, { value = "SOA", label = "SOA" }, { value = "CAA", label = "CAA" }, { value = "PTR", label = "PTR" }, { value = "SRV", label = "SRV" }] sources = ["fig"] [[commands.field]] id = "nameserver" label = "Nameserver" type = "string" option = ["--nameserver", "-n"] suggestions = [{ value = "1.1.1.1", label = "1.1.1.1" }, { value = "8.8.8.8", label = "8.8.8.8" }, { value = "9.9.9.9", label = "9.9.9.9" }] sources = ["fig"] [[commands.field]] id = "class" label = "Class" type = "string" option = ["--class", "-c"] suggestions = [{ value = "IN", label = "IN" }, { value = "CH", label = "CH" }, { value = "HS", label = "HS" }] sources = ["fig"] [[commands.field]] id = "short" label = "Short output" type = "boolean" option = ["--short"] sources = ["fig"] [[commands.field]] id = "json" label = "JSON output" type = "boolean" option = ["--json", "-J"] sources = ["fig"] [[commands.field]] id = "time" label = "Show response time" type = "boolean" option = ["--time"] sources = ["fig"] [[commands.field]] id = "any" label = "All record types" type = "boolean" option = ["--any"] sources = ["fig"] [[commands.field]] id = "ipv4" label = "IPv4 only" type = "boolean" option = ["--ipv4", "-4"] sources = ["fig"] [[commands.field]] id = "ipv6" label = "IPv6 only" type = "boolean" option = ["--ipv6", "-6"] sources = ["fig"] [[commands.field]] id = "strategy" label = "Nameserver strategy" type = "string" option = ["--strategy"] suggestions = [{ value = "all", label = "all" }, { value = "random", label = "random" }, { value = "first", label = "first" }] sources = ["fig"] [[commands.field]] id = "timeout" label = "Timeout (seconds)" type = "integer" option = ["--timeout"] sources = ["fig"] [[commands.field]] id = "debug" label = "Debug logging" type = "boolean" option = ["--debug"] sources = ["fig"] [[commands.field]] id = "dnssec" label = "DNSSEC OK" type = "boolean" option = ["--do"] sources = ["fig"] [[commands.task]] id = "lookup" label = "Look up records" fields = ["names", "type", "nameserver"] required = ["names"] [[commands.task]] id = "short" label = "Short answer" set = { short = [true] } fields = ["names", "type", "nameserver", "short"] required = ["names"] [[commands.task]] id = "json" label = "JSON answer" set = { json = [true] } fields = ["names", "type", "nameserver", "json"] required = ["names"] [[commands.group]] id = "basic" label = "Basic" fields = ["names", "type", "nameserver", "short", "json", "time"] [[commands.group]] id = "advanced" label = "Advanced" fields = ["class", "strategy", "timeout", "debug", "dnssec", "ipv4", "ipv6", "any"]