summaryrefslogtreecommitdiff
path: root/DomainDigCLI.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-21 23:21:19 -0500
committerChristian Cleberg <[email protected]>2026-04-21 23:21:19 -0500
commit3846dc2f5dee69fc4ffbc052009a60e17d60e36b (patch)
tree867dca9d45b87f318c1b368cd535c9c9fb53e29d /DomainDigCLI.swift
parente73d58ee5dd43eaeaaa717f7781cc22256df30f0 (diff)
downloaddomain-dig-3846dc2f5dee69fc4ffbc052009a60e17d60e36b.tar.gz
domain-dig-3846dc2f5dee69fc4ffbc052009a60e17d60e36b.tar.bz2
domain-dig-3846dc2f5dee69fc4ffbc052009a60e17d60e36b.zip
feat(v2.5.0): add caching, request deduplication, and performance improvements
Diffstat (limited to 'DomainDigCLI.swift')
-rw-r--r--DomainDigCLI.swift32
1 files changed, 26 insertions, 6 deletions
diff --git a/DomainDigCLI.swift b/DomainDigCLI.swift
index 73f7028..d0a4d86 100644
--- a/DomainDigCLI.swift
+++ b/DomainDigCLI.swift
@@ -14,19 +14,39 @@ struct DomainDigCLI {
let wantsJSON = arguments.contains("--json") || arguments.contains("-j")
let domains = arguments.filter { !$0.hasPrefix("-") }
- guard let domain = domains.first, !domain.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty else {
+ let requestedDomains = domains
+ .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
+ .filter { !$0.isEmpty }
+
+ guard !requestedDomains.isEmpty else {
fputs("usage: domaindig <domain> [--json]\n", stderr)
Foundation.exit(1)
}
let inspectionService = DomainInspectionService()
- let report = await inspectionService.inspect(domain: domain)
+ var reports: [DomainReport] = []
+ var seen = Set<String>()
+
+ for domain in requestedDomains {
+ let normalizedDomain = domain.lowercased()
+ guard seen.insert(normalizedDomain).inserted else { continue }
+ reports.append(await inspectionService.inspect(domain: domain))
+ }
do {
- let data = try DomainReportExporter.data(
- for: report,
- format: wantsJSON ? .json : .text
- )
+ let data: Data
+ if reports.count == 1, let report = reports.first {
+ data = try DomainReportExporter.data(
+ for: report,
+ format: wantsJSON ? .json : .text
+ )
+ } else {
+ data = try DomainReportExporter.data(
+ for: reports,
+ format: wantsJSON ? .json : .text,
+ title: "DomainDig Batch Report"
+ )
+ }
FileHandle.standardOutput.write(data)
if data.last != 0x0A {
FileHandle.standardOutput.write(Data([0x0A]))