brightdigit/SwiftVer
Easily Manage Versioning in MacOS, iOS, watchOS, and tvOS projects.
Contents
- Parsing the Version from a Bundle - Integrating Version Control Info with Autorevision - Using a StageBuildDictionary to parse Stage
Requirements
- XCode 8.0
- macOS 10.10+, iOS 8.1+, watchOS 2.0+
Installation
CocoaPods
CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:
$ gem install cocoapodsTo integrate SwiftVer into your Xcode project using CocoaPods, specify it in your Podfile:
use_frameworks!
pod 'SwiftVer'Then, run the following command:
$ pod installCarthage
Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.
You can install Carthage with Homebrew using the following command:
$ brew update
$ brew install carthageTo integrate SwiftVer into your Xcode project using Carthage, specify it in your Cartfile:
github "brightdigit/SwiftVer" ~> 2.0.0Run carthage update to build the framework and drag the built SwiftVer.framework into your Xcode project.
Usage
Parsing the Version from a Bundle
The Version bundle initializer takes in a bundle and failable. If your Bundle does to contain a valid version string in the format of major.minor or major.minor.patch, the initializer will fail.
guard let version = Version(bundle: Bundle.main) else {
// invalid version format
}
Valid
[xcode screenshot version 1.0.1]
Valid
[xcode screenshot version 1.0]
Invalid
[xcode screenshot version 1]
Integrating Version Control Info with Autorevision
You can revision metadata from your VCS repository using Autorevision.
- Add the bash script from Autorevision.
- Add a Run Script build phase to your project.
"${SRCROOT}/autorevision.sh" -t <format> >${SRCROOT}/framework/autorevision.<format>- Include the output in your bundle.
- Parse the output and call the
VersionControlInfoinitializer.
public struct VersionControlInfo {
public init(type: String,
baseName: String,
uuid: Hash?,
number: Int,
date: String,
branch: String,
tag: String?,
tick: Int?,
extra: String?,
hash: String,
isWorkingCopyModified: Bool)
}Using a StageBuildDictionary to parse Stage
In version 2.0.0, you can parse the stage based on a StageBuildDictionary. The StageBuildDictionary is a plist which maps the Semantic Versions to Stages and their minimum build number.
Plist where the Build Number Resets at Each Semantic Version (iOS)
[intra build stage dictionary plist screenshot ]
Plist where the Build Number does not Reset at Each Semantic Version (Sparkle-compatible macOS)
[global build stage dictionary plist screenshot ]
To create the dictionary pass it to the following method:
public enum Stage {
public static func dictionary(fromPlistAtURL url: URL) -> StageBuildDictionaryProtocol?
}Documentation
License
SwiftVer is available under the MIT license. See the LICENSE file for more info.
Package Metadata
Repository: brightdigit/SwiftVer
Homepage: www.swiftver.com
Stars: 23
Forks: 1
Open issues: 0
Default branch: master
Primary language: swift
License: MIT
Topics: carthage, cocoapods, ios, macos, plist, swift, tvos, watchos, xcode
README: README.md