swift-version Mac OSMac OSLinuxWindows License

PackageBuildInfo

通过 Git 自动生成 Swift Package 的版本和构建编号。一个 Swift Package Manager 插件。

如果你的基于 Swift Package 的项目能自动从 git 获取版本和构建编号,那岂不是很棒?现在它可以了!

使用一项令人惊叹的新特性 - Swift Package Manager 预构建插件,你可以从 git 生成一个包含当前构建信息的 .swift 文件。它绝不会修改你的本地项目。

要求

用法

.package(url: "https://github.com/DimaRU/PackageBuildInfo", branch: "master")
plugins: [
    .plugin(name: "PackageBuildInfoPlugin", package: "PackageBuildInfo")
]

示例项目

示例项目地址:https://github.com/DimaRU/PackageBuildInfoExample

生成的文件示例

/////
//// Package Build info
///  Code generated by PackageBuildInfo. DO NOT EDIT.
//
import Foundation

public struct PackageBuild {
    public let isDirty: Bool       // Dirty build - git directory is't clean.
    public let timeStamp: Date     // Time of last commit
    public let timeZone: TimeZone  // Time Zone
    public let count: Int          // Total commit count
    public let tag: String?        // Tag, if exist
    public let countSinceTag: Int  // Commit count since tag
    public let branch: String?     // Git branch name
    public let digest: [UInt8]     // Latest commit sha1 digest (20 bytes)

    public var commit: String {
        digest.reduce("") { $0 + String(format: "%02x", $1) }
    }
    public static let info = PackageBuild(
                              isDirty: false,
                              timeStamp: Date(timeIntervalSince1970: 1728751843),
                              timeZone: TimeZone(secondsFromGMT: 10800) ?? TimeZone.current,
                              count: 10,
                              tag: "1.0.0",
                              countSinceTag: 6,
                              branch: "master",
                              digest: [0xa3, 0xf9, 0xa7, 0x1a, 0xab, 0x55, 0x20, 0x91, 0xc3, 0x7f, 0x32, 0x60, 0x11, 0x70, 0xa9, 0x97, 0xd9, 0xf5, 0x21, 0x91])
}

贡献

欢迎提交 Pull Request。对于重大更改,请先开启一个 issue 来讨论您想要更改的内容。

许可证

MIT