mirror of
https://github.com/rehlds/resemiclip.git
synced 2024-12-27 07:05:52 +03:00
154 lines
4.1 KiB
Bash
154 lines
4.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
init()
|
||
|
{
|
||
|
SOURCE_DIR="$@"
|
||
|
GIT_DIR=$SOURCE_DIR
|
||
|
VERSION_FILE=$SOURCE_DIR/version/version.h
|
||
|
APPVERSION_FILE=$SOURCE_DIR/version/appversion.h
|
||
|
|
||
|
if test -z "`git --version`"; then
|
||
|
echo "Please install git client"
|
||
|
echo "sudo apt-get install git"
|
||
|
exit -1
|
||
|
fi
|
||
|
|
||
|
# Read old version
|
||
|
if [ -e "$APPVERSION_FILE" ]; then
|
||
|
OLD_VERSION=$(cat "$APPVERSION_FILE" | grep -wi '#define APP_VERSION' | sed -e 's/#define APP_VERSION[ \t\r\n\v\f]\+\(.*\)/\1/i' -e 's/\r//g')
|
||
|
if [ $? -ne 0 ]; then
|
||
|
OLD_VERSION=""
|
||
|
else
|
||
|
# Remove quotes
|
||
|
OLD_VERSION=$(echo $OLD_VERSION | xargs)
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# Get major and minor information from version.h
|
||
|
MAJOR=$(cat "$VERSION_FILE" | grep -wi 'VERSION_MAJOR' | sed -e 's/.*VERSION_MAJOR.*[^0-9]\([0-9][0-9]*\).*/\1/i' -e 's/\r//g')
|
||
|
if [ $? -ne 0 -o "$MAJOR" = "" ]; then
|
||
|
MAJOR=0
|
||
|
fi
|
||
|
|
||
|
MINOR=$(cat "$VERSION_FILE" | grep -wi 'VERSION_MINOR' | sed -e 's/.*VERSION_MINOR.*[^0-9]\([0-9][0-9]*\).*/\1/i' -e 's/\r//g')
|
||
|
if [ $? -ne 0 -o "$MINOR" = "" ]; then
|
||
|
MINOR=0
|
||
|
fi
|
||
|
|
||
|
BRANCH_NAME=$(git -C "$GIT_DIR/" rev-parse --abbrev-ref HEAD)
|
||
|
if [ $? -ne 0 -o "$BRANCH_NAME" = "" ]; then
|
||
|
BRANCH_NAME=master
|
||
|
fi
|
||
|
|
||
|
COMMIT_COUNT=$(git -C "$GIT_DIR/" rev-list --count $BRANCH_NAME)
|
||
|
if [ $? -ne 0 -o "$COMMIT_COUNT" = "" ]; then
|
||
|
COMMIT_COUNT=0
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Configure remote url repository
|
||
|
#
|
||
|
# Get remote name by current branch
|
||
|
BRANCH_REMOTE=$(git -C "$GIT_DIR/" config branch.$BRANCH_NAME.remote)
|
||
|
if [ $? -ne 0 -o "$BRANCH_REMOTE" = "" ]; then
|
||
|
BRANCH_REMOTE=origin
|
||
|
fi
|
||
|
|
||
|
# Get commit id
|
||
|
COMMIT_SHA=$(git -C "$GIT_DIR/" rev-parse --verify HEAD)
|
||
|
COMMIT_SHA=${COMMIT_SHA:0:7}
|
||
|
|
||
|
# Get remote url
|
||
|
COMMIT_URL=$(git -C "$GIT_DIR/" config remote.$BRANCH_REMOTE.url)
|
||
|
|
||
|
URL_CONSTRUCT=0
|
||
|
|
||
|
if [[ "$COMMIT_URL" == *"git@"* ]]; then
|
||
|
URL_CONSTRUCT=1
|
||
|
|
||
|
# Strip prefix 'git@'
|
||
|
COMMIT_URL=${COMMIT_URL#git@}
|
||
|
|
||
|
# Strip postfix '.git'
|
||
|
COMMIT_URL=${COMMIT_URL%.git}
|
||
|
|
||
|
# Replace ':' to '/'
|
||
|
COMMIT_URL=${COMMIT_URL/:/\/}
|
||
|
|
||
|
elif [[ "$COMMIT_URL" == *"https://"* ]]; then
|
||
|
URL_CONSTRUCT=1
|
||
|
|
||
|
# Strip prefix 'https://'
|
||
|
COMMIT_URL=${COMMIT_URL#https://}
|
||
|
|
||
|
# Strip postfix '.git'
|
||
|
COMMIT_URL=${COMMIT_URL%.git}
|
||
|
fi
|
||
|
|
||
|
if test "$URL_CONSTRUCT" -eq 1; then
|
||
|
# Append extra string
|
||
|
if [[ "$COMMIT_URL" == *"bitbucket.org"* ]]; then
|
||
|
COMMIT_URL=$(echo https://$COMMIT_URL/commits/)
|
||
|
else
|
||
|
COMMIT_URL=$(echo https://$COMMIT_URL/commit/)
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
#
|
||
|
# Detect local modifications
|
||
|
#
|
||
|
if [ `git -C "$GIT_DIR/" ls-files -m | wc -l` = 0 ]; then
|
||
|
MODIFIED=
|
||
|
else
|
||
|
MODIFIED=+m
|
||
|
fi
|
||
|
|
||
|
NEW_VERSION="$MAJOR.$MINOR.$COMMIT_COUNT$MODIFIED"
|
||
|
|
||
|
# Update appversion.h if version has changed or modifications/mixed revisions detected
|
||
|
if [ "$NEW_VERSION" != "$OLD_VERSION" ]; then
|
||
|
update_appversion
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
update_appversion()
|
||
|
{
|
||
|
day=$(date +%d)
|
||
|
year=$(date +%Y)
|
||
|
hours=$(date +%H:%M:%S)
|
||
|
month=$(LANG=en_us_88591; date +"%b")
|
||
|
|
||
|
# Write appversion.h
|
||
|
echo Updating appversion.h, new version is '"'$NEW_VERSION'"', the old one was $OLD_VERSION
|
||
|
|
||
|
echo -e "#ifndef __APPVERSION_H__\r">"$APPVERSION_FILE"
|
||
|
echo -e "#define __APPVERSION_H__\r">>"$APPVERSION_FILE"
|
||
|
echo -e "\r">>"$APPVERSION_FILE"
|
||
|
echo -e "//\r">>"$APPVERSION_FILE"
|
||
|
echo -e "// This file is generated automatically.\r">>"$APPVERSION_FILE"
|
||
|
echo -e "// Don't edit it.\r">>"$APPVERSION_FILE"
|
||
|
echo -e "//\r">>"$APPVERSION_FILE"
|
||
|
echo -e "\r">>"$APPVERSION_FILE"
|
||
|
echo -e "// Version defines\r">>"$APPVERSION_FILE"
|
||
|
echo -e '#define APP_VERSION "'$NEW_VERSION'"\r'>>"$APPVERSION_FILE"
|
||
|
|
||
|
echo -e "#define APP_VERSION_C $MAJOR,$MINOR,$COMMIT_COUNT\r">>"$APPVERSION_FILE"
|
||
|
echo -e '#define APP_VERSION_STRD "'$MAJOR.$MINOR.$COMMIT_COUNT'"\r'>>"$APPVERSION_FILE"
|
||
|
echo -e "#define APP_VERSION_FLAGS 0x0L\r">>"$APPVERSION_FILE"
|
||
|
echo -e "\r">>"$APPVERSION_FILE"
|
||
|
echo -e '#define APP_COMMIT_DATE "'$month $day $year'"\r'>>"$APPVERSION_FILE"
|
||
|
echo -e '#define APP_COMMIT_TIME "'$hours'"\r'>>"$APPVERSION_FILE"
|
||
|
echo -e "\r">>"$APPVERSION_FILE"
|
||
|
|
||
|
echo -e '#define APP_COMMIT_SHA "'$COMMIT_SHA'"\r'>>"$APPVERSION_FILE"
|
||
|
echo -e '#define APP_COMMIT_URL "'$COMMIT_URL'"\r'>>"$APPVERSION_FILE"
|
||
|
echo -e "\r">>"$APPVERSION_FILE"
|
||
|
echo -e "#endif //__APPVERSION_H__\r">>"$APPVERSION_FILE"
|
||
|
}
|
||
|
|
||
|
# Initialise
|
||
|
init $*
|
||
|
|
||
|
# Exit normally
|
||
|
exit 0
|