From 3846dc2f5dee69fc4ffbc052009a60e17d60e36b Mon Sep 17 00:00:00 2001 From: Christian Cleberg Date: Tue, 21 Apr 2026 23:21:19 -0500 Subject: feat(v2.5.0): add caching, request deduplication, and performance improvements --- DomainDigCLI.swift | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) (limited to 'DomainDigCLI.swift') 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 [--json]\n", stderr) Foundation.exit(1) } let inspectionService = DomainInspectionService() - let report = await inspectionService.inspect(domain: domain) + var reports: [DomainReport] = [] + var seen = Set() + + 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])) -- cgit v1.2.3