Back in December I opened an enhancement request in the Swift JIRA site, issue SR-353, to add an npm init-style invocation to swift build for creating all of the boilerplate files needed for a complete Swift package. It wasn’t too long after the request was added that Bastian Rinsche and Tobias Landsberg implemented the feature and had a pull request accepted. Bastian has written up a great post on his experience with opensource Swift and contributing to the community with the implementation of swift build --init.
Let’s look at how it works. First, create a new directory with mkdir for your package or application. We’ll use helloworld as an example: mkdir helloworld. Now, cd into your helloworld directory and run swift build --init.
# cd helloworld # swift build --init Creating Package.swift Creating .gitignore Creating Sources/ Creating Sources/main.swift Creating Tests/
Let’s take a look at what swift build --init generates:
Package.swift– the “manifest” for this package;swift build --initnames your package the same as the directory you invoked it inSources– SwiftPM convention is that source files are included in a directory calledSourcesmain.swift– Swift applications will have one (and only one)main.swiftfile as the execution entry pointTests– a directory to hold testcases for the application; more on this in a moment.gitignore– a handy Git gitignore starter file that ignores build artifacts such as.buildandPackages(things you don’t want to check in to a repository)
In our helloworld example Package.swift looks like this:
|
1 2 3 4 5 |
import PackageDescription let package = Package( name: "helloworld" ) |
Running swift build at this point will create .build/debug/helloworld which when executed you will see Hello, world!.
If you are building a Swift-based library then remove main.swift and replace it with your library code. Without a main.swift SwiftPM will create a static library archive.
Tests
The Tests directory added by swift build --init is a nod to the future implementation of SR-592, which tracks SE-0019, Swift Package Manager support for automated testing.
Getting the Ubuntu Package
To get started with swift build --init you can grab the latest Ubuntu package for Swift 2.2 (as of this writing, version 2.2-0ubuntu15). See this post for instructions. For more details about using SwiftPM in general, see our introduction here. Happy Swifting!