From c7d428455c42e8039a6aedeb032b0685d7a47ebb Mon Sep 17 00:00:00 2001 From: Grégoire Duchêne Date: Sun, 2 Nov 2025 19:27:32 +0000 Subject: First version of the CLI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s pretty basic, and it only works on macOS for now. --- Sources/Main.swift | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Sources/Main.swift (limited to 'Sources/Main.swift') diff --git a/Sources/Main.swift b/Sources/Main.swift new file mode 100644 index 0000000..9ffff7e --- /dev/null +++ b/Sources/Main.swift @@ -0,0 +1,30 @@ +import ArgumentParser +import Foundation +import Logging +import ServiceLifecycle +import SystemPackage + +@main +struct EntryPoint: AsyncParsableCommand { + @Option(help: "Directory to search for ongoing downloads.", transform: { FilePath($0) }) + var directory = FilePath("\(NSHomeDirectory())/Downloads") + + @Option(help: "Suffix of ongoing downloads.") + var suffix = "part" + + @Flag(help: "Enable verbose output.") + var verbose = false + + func run() async throws { + var logger = Logger(label: "caffeinate-downloads") + if self.verbose { + logger.logLevel = .debug + } + + try await ServiceGroup( + services: [Watcher(directory: self.directory, logger: logger, suffix: self.suffix)], + cancellationSignals: [.sigint, .sigquit], + logger: logger + ).run() + } +} -- cgit v1.2.3-70-g09d2