SwiftPM Build Plugin to show Git info on your app

Milepost

A Simple SwiftPM plugin to show Git commit on your apps

Summary

Milepost is a simple library to fetch Git commit info.

You can show Git revisions for debug builds or production builds for end-users’ inquiry.

This library provides SwiftPM Build Tools Plugin. It helps developers to integrate it easily.

Installation

1. Integrate Milepost in your project with SwiftPM

  • File > Add Packages…
  • Enter https://github.com/giginet/Milepost.git
  • Choose Milepost product

2. Link Milepost in your application target

  • Application Target > General > Frameworks, Libraries, and Embedded Content > +
  • Choose Milepost

3. Add build phases to fetch git info

  • Application Target > Build Phases > Run Build Tool Plug-ins > +
  • Choose PrepareMilepost

Usage

You can fetch a latest revision with RevisionLoader.load().

import Milepost

let revision = RevisionLoader.load()!
revision.hash
revision.branch
revision.shortHash
revision.lastCommit.author.description
revision.lastCommit.committer.description
revision.lastCommit.subject
revision.lastCommit.authorDate
revision.lastCommit.commitDate

You can easily build a setting page like followings:

import SwiftUI
import Milepost

struct RevisionView: View {
    var body: some View {
        List {
            Section {
                if let revision = RevisionLoader.load() {
                    LabeledContent("Hash") {
                        Text(revision.hash)
                            .font(.caption)
                    }
                    LabeledContent("Short Hash") {
                        Text(revision.shortHash)
                    }
                    LabeledContent("Branch") {
                        Text(revision.branch ?? "-")
                    }
                    LabeledContent("Last Author") {
                        VStack(alignment: .trailing) {
                            Text(revision.lastCommit.author.name)
                            Text(revision.lastCommit.author.email)
                                .font(.caption)
                        }
                    }
                    LabeledContent("Commit Message") {
                        Text(revision.lastCommit.subject ?? "-")
                    }
                }
            } header: {
                Text("Revision")
            }
        }
    }
}

Requirements

Users Version
Developers Xcode 14.0 or above and macOS 11.0 or above
App Users any iOS, iPadOS, macOS, watchOS, tvOS

This plugin uses SwiftPM Build Tools Plugin. So you have to use Xcode 14.0 or above.

This feature is only required on a build process. Thus, this library runs on any platform versions.

GitHub

View Github