Swiftpack.co - glwithu06/Semver.swift as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by glwithu06.
glwithu06/Semver.swift 1.2.0
Semantic versioning framework in Swift
⭐️ 14
🕓 1 year ago
.package(url: "https://github.com/glwithu06/Semver.swift.git", from: "1.2.0")

Swift CocoaPods Platform Build Status Codecov

Semantic Versioning

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
target 'YOUR_TARGET_NAME' do
    pod 'Semver.swift'

Replace YOUR_TARGET_NAME and then, in the Podfile directory, type:

$ pod install

Swift Package Manager

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

⚠️ If the version is invalid, 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.


Stars: 14
Last commit: 1 year ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

2 years ago
  • Updated to Swift5
  • Adds argument label (string, number)

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics