If you are writing a Swift CLI application and want to use asynchronous tasks, then you can use a special Swift attribute called @main
. This is the inbuilt way to handle asynchronous operations and also prevents the Command Line Application/Tool from exiting before the asynchronous operation completes. Here's how you do it:
1. Rename main.swift to AppName.swift
First of all, you need to rename the main.swift
file to AppName.swift
. For example, if your app name is AppBoxCLI then rename main.swift
to AppBoxCLI.swift
.
2. Create a struct with the @main attribute
Now create a new AppName
struct in AppName.swift
file with the @main
attribute. For example:
@main
struct AppBoxCLI {
}
3. Add the main function with async
Now in the AppName
struct, you need to add a main function with async
. You can also add throws
if you need to handle errors here. For example:
@main
struct AppBoxCLI {
static func main() async throws {
let appBoxCore = AppBoxCore.init()
try await appBoxCore.upload()
}
}