Swift CocoaPods Platform Build Status Codecov

语义化版本控制

Swift 中的语义化版本控制实现。Semver 代表一个符合 语义化版本控制规范 的语义化版本。

需求

安装

Semver 不包含任何外部依赖项。以下是当前支持的选项:

Cocoapods

# Podfile
user_framework!
target 'YOUR_TARGET_NAME' do
    pod 'Semver.swift'
end

替换 YOUR_TARGET_NAME,然后在 Podfile 目录中,输入

$ pod install

Swift Package Manager

创建一个 Package.swift 文件。

// swift-tools-version:5.1

import PackageDescription

let package = Package(
  name: "NAME",
  dependencies: [
    .package(url: "https://github.com/glwithu06/Semver.swift.git", from: "SEMVER_TAG")
  ],
  targets: [
    .target(name: "NAME", dependencies: ["Semver"])
  ]
)

替换 SEMVER_TAG,然后输入

$ swift build

用法

创建

可以直接实例化 Semver

let version = Semver(major: 1, minor: 23, patch: 45, prereleaseIdentifiers: ["rc", "1"], buildMetadataIdentifiers: ["B001"])

minorpatch 是可选参数,默认为 "0"。

prereleaseIdentifiersbuildMetadataIdentifiers 是可选参数,默认为 []

解析

您可以从字符串创建 Semver

let version = try Semver(string: "1.23.45-rc.1+B001")

或者从数字创建。

let version = try Semver(number: 1.23)
let version = try Semver(number: 10)

如果版本无效,它会抛出一个 ParsingError

扩展

Semver 符合 ExpressibleByStringLiteral, ExpressibleByIntegerLiteral, ExpressibleByFloatLiteral

它可以将 String 转换为 Semver

let version: Semver = "1.23.45-rc.1+B001"

或者将 Numeric 转换为 Semver

let version: Semver = 1
let version: Semver = 1.23

⚠️如果版本无效,Semver 表示 "0.0.0"。它不会抛出任何错误。

比较

实现了默认的比较运算符 (< , <= , > ,>= ,== , !=)。

这将根据 语义化版本控制规范 比较主版本号、次版本号、补丁版本号以及预发布标识符。

贡献

欢迎任何 pull request 和 bug 报告!

请随时提交 pull request。