This package provides the Swift protocol compatible with Semantic Versioning (2.0.0).
By conforming to the SemanticVersioning
protocol, it can be represented as a type that behaves as a version of software compliant with Semantic Versioning (2.0.0).
import SemanticVersioning
// conforms to SemanticVersioning
struct MyAppVersion: SemanticVersioning {
let major: Int
let minor: Int
let patch: Int
let preRelease: PreRelease?
let buildMetaData: String?
}
Can be initialized from String literals.
let appVersion: MyAppVersion = "1.1.1"
// String literals can also contain pre-release and build metadata.
// let appVersion: MyAppVersion = "1.1.1-alpha"
// let appVersion: MyAppVersion = "1.1.1-alpha+build.1"
Comparable and Equatable.
if appVersion > "1.0.0" {
// Some operation when appVersion is greater than 1.0.0
} else if appVersion == "0.1.0" {
// Some operation when appVersion is 0.1.0
}
Increment version number.
print(appVersion)
// -> 1.1.1
print(appVersion.increment(.major))
// -> 2.0.0
print(appVersion.increment(.minor))
// -> 1.2.0
print(appVersion.increment(.patch))
// -> 1.1.2
Validate version format with macro.
import SemanticVersioningMacro
let validVersionString = #semanticVersioning("1.0.0") // Valid format!
let invalidVersionString = #semanticVersioning("1.0.a") // Invalid format! Compile error!
Add SemanticVersioning to your Package.swift
dependencies:
.package(url: "https://github.com/taji-taji/SemanticVersioning.git", from: "1.0.0")
Add SemanticVersioning to your dependencies of SemanticVersioning
target:
.product(name: "SemanticVersioning", package: "SemanticVersioning"),
// If you want to use macro, add `SemanticVersioningMacro`.
.product(name: "SemanticVersioningMacro", package: "SemanticVersioning"),
link |
Stars: 0 |
Last commit: 2 weeks ago |
Full Changelog: https://github.com/taji-taji/SemanticVersioning/compare/0.0.2...1.0.0
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics