Semver

Github CI Status supports platforms

Semver 是 语义化版本控制 的 Swift 实现。

要求

用法

快速开始

import Semver

// A leading "v" character is ignored.
let version = Semver("v1.3.8-rc.1+build.3")!

version > Semver("1.0.2+39f1d74")! // true

相等性

Equatable 的一致性遵循 Semver 的语义相等性,并忽略构建元数据。 这也会影响 ComparableHashable

您可以使用 ===!== 来考虑构建元数据。

let v1 = Version("1.0.0+100")!
let v2 = Version("1.0.0+200")!

v1 == v2 // true
v1 <= v2 // true
v1.hashValue == v2.hashValue // true
Set([v1, v2]).count == 1 // ❗️true

v1 === v2 // false
v1 !== v2 // true

有效性检查

字符串初始化器 Semver.init?(_:) 总是产生有效的版本(或 nil)。 字面量初始化器 Semver.init(stringLiteral:) 仅接受 StaticString,并在失败时崩溃。

但是,成员明智的初始化器 Semver.init(major:minor:patch:prerelease:buildMetadata:) 不对其字段执行有效性检查。 可能形成无效的版本。 您可以使用 Semver.isValid 手动验证版本。

let version = Semver(major: 0, minor: 0, patch: -1) // invalid version 0.0.-1
version.isValid // false

安装

Swift Package Manager

将项目添加到您的 Package.swift 文件

package.dependencies += [
    .package(url: "https://github.com/ddddxxx/Semver", .upToNextMinor("0.2.0"))
]

Carthage

将项目添加到您的 Cartfile

github "ddddxxx/Semver"

复制文件

这是一个轻量级的库,仅包含一个文件。 您可以简单地复制/粘贴 Semver 文件 到您的项目中。

许可

Semver 在 MIT 许可下可用。 请参阅 LICENSE 文件