diff options
Diffstat (limited to 'DomainDigCLI.swift')
| -rw-r--r-- | DomainDigCLI.swift | 32 |
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])) |
