summaryrefslogtreecommitdiff
path: root/DomainDigCLI.swift
diff options
context:
space:
mode:
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]))