/SwiftVer

Easily Manage Versioning in MacOS, iOS, watchOS, and tvOS projects.

Primary LanguageSwiftMIT LicenseMIT

header

SwiftVer

SwiftPM Twitter GitHub GitHub issues Beerpay Analytics

macOS ubuntu Travis (.com) Codecov CodeFactor Grade codebeat badge Code Climate maintainability Code Climate technical debt Code Climate issues

Version License Platform Cocoapods doc percentage Carthage compatible Reviewed by Hound

Manage versioning in MacOS, iOS, watchOS, and tvOS projects by parsing your bundle and revision metadata from your VCS repository.

screenshoot

Contents

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 cocoapods

To integrate SwiftVer into your Xcode project using CocoaPods, specify it in your Podfile:

use_frameworks!

pod 'SwiftVer'

Then, run the following command:

$ pod install

Carthage

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 carthage

To integrate SwiftVer into your Xcode project using Carthage, specify it in your Cartfile:

github "brightdigit/SwiftVer" ~> 2.0.0

Run 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.

  1. Add the bash script from Autorevision.

  2. Add a Run Script build phase to your project.

"${SRCROOT}/autorevision.sh" -t <format> >${SRCROOT}/framework/autorevision.<format>
  1. Include the output in your bundle.

  2. Parse the output and call the VersionControlInfo initializer.

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

Documentation Here

Author

Leo G Dion, BrightDigit, LLC

License

SwiftVer is available under the MIT license. See the LICENSE file for more info.