https://github.com/glwithu06/semver.swift
Semantic versioning framework in Swift
https://github.com/glwithu06/semver.swift
apple cocoapods ios macos semantic semver swift swift-package-manager tvos watchos xcode
Last synced: 11 months ago
JSON representation
Semantic versioning framework in Swift
- Host: GitHub
- URL: https://github.com/glwithu06/semver.swift
- Owner: glwithu06
- License: mit
- Created: 2019-01-20T02:00:25.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2021-01-19T14:00:34.000Z (about 5 years ago)
- Last Synced: 2025-04-09T11:50:46.220Z (12 months ago)
- Topics: apple, cocoapods, ios, macos, semantic, semver, swift, swift-package-manager, tvos, watchos, xcode
- Language: Swift
- Homepage:
- Size: 31.3 KB
- Stars: 15
- Watchers: 2
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Semantic Versioning
Semantic Versioning implementation in Swift.
`Semver` represent a semantic version according to the [Semantic Versioning Specification](http://semver.org/spec/v2.0.0.html).
## Requirements
* Swift 5.1
* iOS 8
* macOS 10.11
* tvOS 9.0
* watchOS 2.0
## Installation
`Semver` doesn't contain any external dependencies.
These are currently support options:
### Cocoapods
```
# 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
```
### Swift Package Manager
Create a `Package.swift` file.
```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"])
]
)
```
Replace `SEMVER_TAG` and then type:
```
$ swift build
```
## Usage
### Create
`Semver` can be instantiated directly:
```Swift
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 `[]`.
### Parse
You can create `Semver` from String.
```Swift
let version = try Semver(string: "1.23.45-rc.1+B001")
```
or from Numeric.
```Swift
let version = try Semver(number: 1.23)
```
```Swift
let version = try Semver(number: 10)
```
If the version is invalid, it throws a `ParsingError`.
### Extensions
`Semver` conforms to `ExpressibleByStringLiteral`, `ExpressibleByIntegerLiteral`, `ExpressibleByFloatLiteral`.
It can convert a `String` to `Semver`.
```Swift
let version: Semver = "1.23.45-rc.1+B001"
```
or `Numeric` to `Semver`.
```Swift
let version: Semver = 1
```
```Swift
let version: Semver = 1.23
```
⚠️ If the version is invalid, `Semver` represents "0.0.0". It doesn't throw any errors.
### Compare
The default operators for comparsion are implemented(`<` , `<=` , `>` ,`>=` ,`==` , `!=`).
This will comapre major, minor, patch and the prerelease identifiers according to the [Semantic Versioning Specification](http://semver.org/spec/v2.0.0.html).
## Contribution
Any pull requests and bug reports are welcome!
Feel free to make a pull request.