Files
dotfiles/dots/Sources/ShellClient/Client.swift
2023-03-05 14:37:02 -05:00

38 lines
925 B
Swift

import Dependencies
import Foundation
import XCTestDynamicOverlay
#if canImport(FoundationNetworking)
import FoundationNetworking
#endif
public struct ShellClient {
public var foregroundShell: ([String]) throws -> Void
public var backgroundShell: ([String]) throws -> String
public func foregroundShell(_ arguments: String...) throws {
try self.foregroundShell(arguments)
}
@discardableResult
public func backgroundShell(_ arguments: String...) throws -> String {
try self.backgroundShell(arguments)
}
}
extension ShellClient: TestDependencyKey {
public static let noop = Self.init(
foregroundShell: unimplemented(),
backgroundShell: unimplemented(placeholder: "")
)
public static let testValue: ShellClient = .noop
}
extension DependencyValues {
public var shellClient: ShellClient {
get { self[ShellClient.self] }
set { self[ShellClient.self] = newValue }
}
}