mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
48 lines
1.3 KiB
Swift
Executable File
48 lines
1.3 KiB
Swift
Executable File
#!/usr/bin/swift
|
|
|
|
import Foundation
|
|
|
|
struct SwiftErr: TextOutputStream {
|
|
public static var stream = SwiftErr()
|
|
|
|
mutating func write(_ string: String) {
|
|
fputs(string, stderr)
|
|
}
|
|
}
|
|
|
|
// TODO: tell which arguments have to be provided
|
|
guard CommandLine.arguments.count >= 4 else {
|
|
exit(2)
|
|
}
|
|
|
|
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]
|
|
]
|
|
|
|
// 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)
|
|
}
|
|
} catch {
|
|
print(error.localizedDescription, to: &SwiftErr.stream)
|
|
exit(1)
|
|
}
|
|
|
|
// Quarantine the file
|
|
do {
|
|
var resourceValues = URLResourceValues()
|
|
resourceValues.quarantineProperties = quarantineProperties
|
|
try dataLocationURL.setResourceValues(resourceValues)
|
|
} catch {
|
|
print(error.localizedDescription, to: &SwiftErr.stream)
|
|
exit(1)
|
|
}
|