I’ve tried to make a command-line program with the Swift Package Manager, and use Foundation for networking (on macOS):
import Foundation
import Commander
import HeliumLogger
import LoggerAPI
enum ReturnCode: Int32 {
case badUrlString = 10, retrievalError
}
HeliumLogger.use()
let main = command { (urlArgument: String) in
guard let url = URL(string: urlArgument) else {
Log.error("Argument \"\(urlArgument)\" cannot be converted to a URL.")
exit(ReturnCode.badUrlString.rawValue)
}
let session = URLSession(configuration: .ephemeral)
let task = session.dataTask(with: url, completionHandler: { (data, response, error) in
if let error = error {
Log.error("Retrieval Error: \(error)")
exit(ReturnCode.retrievalError.rawValue)
}
guard let data = data else {
print("(no data)")
return
}
print(data.base64EncodedString())
print("Hi there")
})
print("Hello world")
task.resume()
}
main.run()
All I got from “swift build” and the Xcode project it made for me is just the “Hello world” message. The task block was ignored. Did I get calling it wrong?
···
—
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com
I’ve tried to make a command-line program with the Swift Package Manager, and use Foundation for networking (on macOS):
import Foundation
import Commander
import HeliumLogger
import LoggerAPI
enum ReturnCode: Int32 {
case badUrlString = 10, retrievalError
}
HeliumLogger.use()
let main = command { (urlArgument: String) in
guard let url = URL(string: urlArgument) else {
Log.error("Argument \"\(urlArgument)\" cannot be converted to a URL.")
exit(ReturnCode.badUrlString.rawValue)
}
let session = URLSession(configuration: .ephemeral)
let task = session.dataTask(with: url, completionHandler: { (data, response, error) in
if let error = error {
Log.error("Retrieval Error: \(error)")
exit(ReturnCode.retrievalError.rawValue)
}
guard let data = data else {
print("(no data)")
return
}
print(data.base64EncodedString())
print("Hi there")
})
print("Hello world")
task.resume()
}
main.run()
All I got from “swift build” and the Xcode project it made for me is just the “Hello world” message. The task block was ignored. Did I get calling it wrong?
—
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com