Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions Coder-Desktop/Coder-Desktop/About.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,18 @@ enum About {
return coder
}

private static var version: NSString {
let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "Unknown"
let commitHash = Bundle.main.infoDictionary?["CommitHash"] as? String ?? "Unknown"
return "Version \(version) - \(commitHash)" as NSString
}

@MainActor
static func open() {
appActivate()
NSApp.orderFrontStandardAboutPanel(options: [
.credits: credits,
.applicationVersion: version,
])
}
}
2 changes: 2 additions & 0 deletions Coder-Desktop/Coder-Desktop/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,7 @@
</dict>
<key>SUPublicEDKey</key>
<string>Ae2oQLTcx89/a73XrpOt+IVvqdo+fMTjo3UKEm77VdA=</string>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
<string>Ae2oQLTcx89/a73XrpOt+IVvqdo+fMTjo3UKEm77VdA=</string>
<string>Ae2oQLTcx89/a73XrpOt+IVvqdo+fMTjo3UKEm77VdA=</string>

<key>CommitHash</key>
<string>$(GIT_COMMIT_HASH)</string>
</dict>
</plist>
1 change: 1 addition & 0 deletions Coder-Desktop/project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ settings:
base:
MARKETING_VERSION: ${MARKETING_VERSION} # Sets the version number.
CURRENT_PROJECT_VERSION: ${CURRENT_PROJECT_VERSION} # Sets the build number.
GIT_COMMIT_HASH: ${GIT_COMMIT_HASH}

ALWAYS_SEARCH_USER_PATHS: NO
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: YES
Expand Down
15 changes: 13 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,29 @@ $(error MUTAGEN_VERSION must be a valid version)
endif

ifndef CURRENT_PROJECT_VERSION
CURRENT_PROJECT_VERSION:=$(shell git describe --match 'v[0-9]*' --dirty='.devel' --always --tags)
# Must be X.Y.Z[.N]
CURRENT_PROJECT_VERSION:=$(shell ./scripts/version.sh)
endif
ifeq ($(strip $(CURRENT_PROJECT_VERSION)),)
$(error CURRENT_PROJECT_VERSION cannot be empty)
endif

ifndef MARKETING_VERSION
MARKETING_VERSION:=$(shell git describe --match 'v[0-9]*' --tags --abbrev=0 | sed 's/^v//' | sed 's/-.*$$//')
# Must be X.Y.Z
MARKETING_VERSION:=$(shell ./scripts/version.sh --short)
endif
ifeq ($(strip $(MARKETING_VERSION)),)
$(error MARKETING_VERSION cannot be empty)
endif

ifndef GIT_COMMIT_HASH
# Must be a valid git commit hash
GIT_COMMIT_HASH := $(shell ./scripts/version.sh --hash)
endif
ifeq ($(strip $(GIT_COMMIT_HASH)),)
$(error GIT_COMMIT_HASH cannot be empty)
endif

# Define the keychain file name first
KEYCHAIN_FILE := app-signing.keychain-db
# Use shell to get the absolute path only if the file exists
Expand All @@ -70,6 +80,7 @@ $(XCPROJECT): $(PROJECT)/project.yml
EXT_PROVISIONING_PROFILE_ID=${EXT_PROVISIONING_PROFILE_ID} \
CURRENT_PROJECT_VERSION=$(CURRENT_PROJECT_VERSION) \
MARKETING_VERSION=$(MARKETING_VERSION) \
GIT_COMMIT_HASH=$(GIT_COMMIT_HASH) \
xcodegen

$(PROJECT)/VPNLib/vpn.pb.swift: $(PROJECT)/VPNLib/vpn.proto
Expand Down
60 changes: 60 additions & 0 deletions scripts/version.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/usr/bin/env bash
set -euo pipefail

usage() {
echo "Usage: $0 [--short] [--hash]"
echo " --short Output a CFBundleShortVersionString compatible version (X.Y.Z)"
echo " --hash Output only the commit hash"
echo " -h, --help Display this help message"
echo ""
echo "With no flags, outputs: X.Y.Z[.N]"
}

SHORT=false
HASH_ONLY=false

while [[ "$#" -gt 0 ]]; do
case $1 in
--short)
SHORT=true
shift
;;
--hash)
HASH_ONLY=true
shift
;;
-h | --help)
usage
exit 0
;;
*)
echo "Unknown parameter passed: $1"
usage
exit 1
;;
esac
done

if [[ "$HASH_ONLY" == true ]]; then
current_hash=$(git rev-parse --short=7 HEAD)
echo "$current_hash"
exit 0
fi

describe_output=$(git describe --tags)

# Of the form `vX.Y.Z-N-gHASH`
if [[ $describe_output =~ ^v([0-9]+\.[0-9]+\.[0-9]+)(-([0-9]+)-g[a-f0-9]+)?$ ]]; then
version=${BASH_REMATCH[1]} # X.Y.Z
commits=${BASH_REMATCH[3]} # number of commits since tag

if [[ "$SHORT" == true ]]; then
echo "$version"
exit 0
fi

echo "${version}.${commits}"
else
echo "Error: Could not parse git describe output: $describe_output" >&2
exit 1
fi
Loading