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 

_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to