summaryrefslogtreecommitdiff
path: root/DomainDigCLI.swift
diff options
context:
space:
mode:
Diffstat (limited to 'DomainDigCLI.swift')
-rw-r--r--DomainDigCLI.swift39
1 files changed, 39 insertions, 0 deletions
diff --git a/DomainDigCLI.swift b/DomainDigCLI.swift
new file mode 100644
index 0000000..73f7028
--- /dev/null
+++ b/DomainDigCLI.swift
@@ -0,0 +1,39 @@
+import Foundation
+
+@main
+struct DomainDigCLI {
+ static func main() async {
+ let arguments = Array(CommandLine.arguments.dropFirst())
+
+ guard let command = CommandLine.arguments.first else {
+ fputs("usage: domaindig <domain> [--json]\n", stderr)
+ Foundation.exit(1)
+ }
+ _ = command
+
+ 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 {
+ fputs("usage: domaindig <domain> [--json]\n", stderr)
+ Foundation.exit(1)
+ }
+
+ let inspectionService = DomainInspectionService()
+ let report = await inspectionService.inspect(domain: domain)
+
+ do {
+ let data = try DomainReportExporter.data(
+ for: report,
+ format: wantsJSON ? .json : .text
+ )
+ FileHandle.standardOutput.write(data)
+ if data.last != 0x0A {
+ FileHandle.standardOutput.write(Data([0x0A]))
+ }
+ } catch {
+ fputs("domaindig: \(error.localizedDescription)\n", stderr)
+ Foundation.exit(1)
+ }
+ }
+}