24 lines
680 B
Swift
24 lines
680 B
Swift
import TermindDomain
|
|
|
|
import struct TermindDomain.Host
|
|
|
|
nonisolated enum MobileSnippetExecutionDecision: Equatable {
|
|
case chooseHosts
|
|
case confirmDestructive([Host.ID])
|
|
case execute([Host.ID])
|
|
}
|
|
|
|
nonisolated enum MobileSnippetOperations {
|
|
static func executionDecision(
|
|
for snippet: Snippet,
|
|
hostIDs: [Host.ID],
|
|
requiresHostSelection: Bool
|
|
) -> MobileSnippetExecutionDecision {
|
|
if requiresHostSelection || hostIDs.isEmpty { return .chooseHosts }
|
|
if CommandRiskClassifier.assess(snippet.body).requiresSecondConfirmation {
|
|
return .confirmDestructive(hostIDs)
|
|
}
|
|
return .execute(hostIDs)
|
|
}
|
|
}
|