Swiftpack.co - Package - SDGGiesbrecht/SDGSwift


macOS • Linux



SDGSwift enables use of the Swift compiler as a package dependency.

השֹּׁלֵחַ אִמְרָתוֹ אָרֶץ עַד־מְהֵרָה יָרוּץ דְּבָרוֹ׃
He sends His command to the earth; His word runs swiftly.

                                                                                                    ―a psalmist


  • Compiler operations such as building and testing: SDGSwift, SDGXcode
  • Package Manager operations such as fetching and manifest loading: SDGSwiftPackageManager
  • Utilities for defining configuration files written in Swift (similar to package manifests): SDGSwiftConfiguration, SDGSwiftConfigurationLoading

(For a list of related projects, see here.)


SDGSwift provides libraries for use with the Swift Package Manager.

Simply add SDGSwift as a dependency in Package.swift and specify which of the libraries to use:

let package = Package(
    name: "MyPackage",
    dependencies: [
        .package(url: "https://github.com/SDGGiesbrecht/SDGSwift", .upToNextMinor(from: Version(0, 3, 7))),
    targets: [
        .target(name: "MyTarget", dependencies: [
            .productItem(name: "SDGSwift", package: "SDGSwift"),
            .productItem(name: "SDGSwiftPackageManager", package: "SDGSwift"),
            .productItem(name: "SDGXcode", package: "SDGSwift"),
            .productItem(name: "SDGSwiftConfiguration", package: "SDGSwift"),
            .productItem(name: "SDGSwiftConfigurationLoading", package: "SDGSwift"),
            .productItem(name: "SampleConfiguration", package: "SDGSwift"),

The libraries’ modules can then be imported in source files:

import SDGSwift
import SDGSwiftPackageManager
import SDGXcode
import SDGSwiftConfiguration
import SDGSwiftConfigurationLoading
import SampleConfiguration

Example Usage

do {
    let package = Package(url: URL(string: "https://github.com/apple/example-package-dealer")!)
    try package.build(.version(Version(2, 0, 0)), to: temporaryDirectory)
} catch {


The SDGSwift project is maintained by Jeremy David Giesbrecht.

If SDGSwift saves you money, consider giving some of it as a donation.

If SDGSwift saves you time, consider devoting some of it to contributing back to the project.

Ἄξιος γὰρ ὁ ἐργάτης τοῦ μισθοῦ αὐτοῦ ἐστι.
For the worker is worthy of his wages.



Stars: 3
Help us keep the lights on



0.3.7 - Nov 5, 2018

Bug Fixes

  • Fixed an issue which could sometimes interfere with finding Swift on Linux.

0.3.6 - Nov 2, 2018

Bug Fixes

  • Compatible with Swift 4.2.1 and Xcode 10.1.
  • Installs no longer include .product directory artifacts.

0.3.5 - Oct 2, 2018

No changes to the public API.

0.3.4 - Oct 1, 2018

Bug Fixes

  • execute(_:of:with:cacheDirectory:reportProgress:) no longer uses a temporary path vulnerable to SR‐8803 and subsequent failure on Linux.

0.3.3 - Sep 29, 2018

Bug Fixes

  • Linux no longer encounters linker errors when depending on SDGSwift. (See SR‐8803.)