mirror of
https://github.com/nickshanks/ResKnife.git
synced 2024-12-22 02:29:56 +00:00
Add automatic versioning.
Only the Cocoa application target has a corresponding build script phase at present.
This commit is contained in:
parent
4948b1de3f
commit
9662e44c9d
@ -48,11 +48,11 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.6 cvs</string>
|
||||
<string></string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>ResK</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>19</string>
|
||||
<string></string>
|
||||
<key>NSAppleScriptEnabled</key>
|
||||
<true/>
|
||||
<key>NSMainNibFile</key>
|
||||
|
@ -1604,6 +1604,7 @@
|
||||
E18BF56F069FEA1300F076B8 /* Sources */,
|
||||
E18BF586069FEA1300F076B8 /* Frameworks */,
|
||||
E18BF589069FEA1300F076B8 /* Rez */,
|
||||
0EF0A9D818B18F3D00BF3F47 /* Run Versioning Script */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@ -2027,6 +2028,24 @@
|
||||
};
|
||||
/* End PBXRezBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
0EF0A9D818B18F3D00BF3F47 /* Run Versioning Script */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Run Versioning Script";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "${PROJECT_DIR}/Scripts/build-version.sh";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8415918618AFE39B00306B4F /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
|
62
Scripts/build-version.sh
Executable file
62
Scripts/build-version.sh
Executable file
@ -0,0 +1,62 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This script automatically sets the version and short version string of
|
||||
# an Xcode project from the Git repository containing the project.
|
||||
#
|
||||
# To use this script in Xcode, add the script's path to a "Run Script" build
|
||||
# phase for your application target.
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
||||
# First, check for git in $PATH
|
||||
hash git 2>/dev/null || { echo >&2 "Git required, not installed. Aborting build number update script."; exit 0; }
|
||||
|
||||
# Alternatively, we could use Xcode's copy of the Git binary,
|
||||
# but old Xcodes don't have this.
|
||||
#GIT=$(xcrun -find git)
|
||||
|
||||
# Run Script build phases that operate on product files of the target that defines them should use the value of this build setting [TARGET_BUILD_DIR]. But Run Script build phases that operate on product files of other targets should use “BUILT_PRODUCTS_DIR” instead.
|
||||
INFO_PLIST="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
|
||||
|
||||
# Build version (closest-tag-or-branch "-" commits-since-tag "-" short-hash dirty-flag)
|
||||
BUILD_VERSION=$(git describe --tags --always --dirty=+)
|
||||
|
||||
# Use the latest tag for short version (expected tag format "n[.n[.n]]")
|
||||
LATEST_TAG=$(git describe --tags --abbrev=0)
|
||||
COMMIT_COUNT_SINCE_TAG=$(git rev-list --count ${LATEST_TAG}..)
|
||||
if [ $LATEST_TAG = "start" ]
|
||||
then LATEST_TAG=0
|
||||
fi
|
||||
if [ $COMMIT_COUNT_SINCE_TAG = 0 ]
|
||||
then SHORT_VERSION="$LATEST_TAG"
|
||||
else SHORT_VERSION="${LATEST_TAG}d${COMMIT_COUNT_SINCE_TAG}"
|
||||
fi
|
||||
|
||||
# Bundle version (commits-on-master-until-branch "." commits-on-branch)
|
||||
# Assumes that two release branches will not diverge from the same commit on master.
|
||||
if [ $(git rev-parse --abbrev-ref HEAD) = "master" ]; then
|
||||
MASTER_COMMIT_COUNT=$(git rev-list --count HEAD)
|
||||
BRANCH_COMMIT_COUNT=0
|
||||
BUNDLE_VERSION="$MASTER_COMMIT_COUNT"
|
||||
else
|
||||
MASTER_COMMIT_COUNT=$(git rev-list --count $(git rev-list master.. | tail -n 1)^)
|
||||
BRANCH_COMMIT_COUNT=$(git rev-list --count master..)
|
||||
if [ $BRANCH_COMMIT_COUNT = 0 ]
|
||||
then BUNDLE_VERSION="$MASTER_COMMIT_COUNT"
|
||||
else BUNDLE_VERSION="${MASTER_COMMIT_COUNT}.${BRANCH_COMMIT_COUNT}"
|
||||
fi
|
||||
fi
|
||||
|
||||
defaults write "$INFO_PLIST" CFBundleBuildVersion "$BUILD_VERSION"
|
||||
defaults write "$INFO_PLIST" CFBundleShortVersionString "$SHORT_VERSION"
|
||||
defaults write "$INFO_PLIST" CFBundleVersion "$BUNDLE_VERSION"
|
||||
|
||||
# For debugging:
|
||||
#echo "BUILD VERSION: $BUILD_VERSION"
|
||||
#echo "LATEST_TAG: $LATEST_TAG"
|
||||
#echo "COMMIT_COUNT_SINCE_TAG: $COMMIT_COUNT_SINCE_TAG"
|
||||
#echo "SHORT VERSION: $SHORT_VERSION"
|
||||
#echo "MASTER_COMMIT_COUNT: $MASTER_COMMIT_COUNT"
|
||||
#echo "BRANCH_COMMIT_COUNT: $BRANCH_COMMIT_COUNT"
|
||||
#echo "BUNDLE_VERSION: $BUNDLE_VERSION"
|
Loading…
Reference in New Issue
Block a user