brew/Library/Homebrew/cask/utils/quarantine.swift

48 lines
1.3 KiB
Swift
Raw Normal View History

#!/usr/bin/swift
import Foundation
2021-12-31 13:23:45 +03:00
struct SwiftErr: TextOutputStream {
public static var stream = SwiftErr()
2021-12-31 13:23:45 +03:00
mutating func write(_ string: String) {
fputs(string, stderr)
}
}
2021-12-31 13:23:45 +03:00
// TODO: tell which arguments have to be provided
guard CommandLine.arguments.count >= 4 else {
exit(2)
}
2021-12-31 13:23:45 +03:00
var dataLocationURL = URL(fileURLWithPath: CommandLine.arguments[1])
let quarantineProperties: [String: Any] = [
kLSQuarantineAgentNameKey as String: "Homebrew Cask",
kLSQuarantineTypeKey as String: kLSQuarantineTypeWebDownload,
kLSQuarantineDataURLKey as String: CommandLine.arguments[2],
kLSQuarantineOriginURLKey as String: CommandLine.arguments[3]
2021-12-31 13:23:45 +03:00
]
// Check for if the data location URL is reachable
do {
let isDataLocationURLReachable = try dataLocationURL.checkResourceIsReachable()
guard isDataLocationURLReachable else {
print("URL \(dataLocationURL.path) is not reachable. Not proceeding.", to: &SwiftErr.stream)
exit(1)
}
2021-12-31 13:23:45 +03:00
} catch {
print(error.localizedDescription, to: &SwiftErr.stream)
exit(1)
}
2021-12-31 13:23:45 +03:00
// Quarantine the file
do {
var resourceValues = URLResourceValues()
resourceValues.quarantineProperties = quarantineProperties
try dataLocationURL.setResourceValues(resourceValues)
} catch {
print(error.localizedDescription, to: &SwiftErr.stream)
exit(1)
}