Semantic Versioning implementation in Swift.
Semver
represent a semantic version according to the Semantic Versioning Specification.
- Swift 5.1
- iOS 8
- macOS 10.11
- tvOS 9.0
- watchOS 2.0
Semver
doesn't contain any external dependencies.
These are currently support options:
# Podfile
user_framework!
target 'YOUR_TARGET_NAME' do
pod 'Semver.swift'
end
Replace YOUR_TARGET_NAME
and then, in the Podfile
directory, type:
$ pod install
Create a Package.swift
file.
// 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"])
]
)
Replace SEMVER_TAG
and then type:
$ swift build
Semver
can be instantiated directly:
let version = Semver(major: 1, minor: 23, patch: 45, prereleaseIdentifiers: ["rc", "1"], buildMetadataIdentifiers: ["B001"])
minor
, patch
are optional parameters default to "0".
prereleaseIdentifiers
, buildMetadataIdentifiers
are optional parameters default to []
.
You can create Semver
from String.
let version = try Semver(string: "1.23.45-rc.1+B001")
or from Numeric.
let version = try Semver(number: 1.23)
let version = try Semver(number: 10)
If the version is invalid, it throws a ParsingError
.
Semver
conforms to ExpressibleByStringLiteral
, ExpressibleByIntegerLiteral
, ExpressibleByFloatLiteral
.
It can convert a String
to Semver
.
let version: Semver = "1.23.45-rc.1+B001"
or Numeric
to Semver
.
let version: Semver = 1
let version: Semver = 1.23
Semver
represents "0.0.0". It doesn't throw any errors.
The default operators for comparsion are implemented(<
, <=
, >
,>=
,==
, !=
).
This will comapre major, minor, patch and the prerelease identifiers according to the Semantic Versioning Specification.
Any pull requests and bug reports are welcome!
Feel free to make a pull request.