New version control #81
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pawn Compiler | |
on: | |
push: | |
branches: [master] | |
paths-ignore: | |
- '**.md' | |
pull_request: | |
types: [opened, reopened, synchronize] | |
release: | |
types: [published] | |
tags: | |
- "v*.*.*" | |
jobs: | |
build: | |
name: "Build" | |
runs-on: ubuntu-latest | |
outputs: | |
sha: ${{ steps.declare_sha.outputs.sha }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Check dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y git | |
- name: Declare SHA & package name | |
id: declare_sha | |
shell: bash | |
run: | | |
SHA=$(git rev-parse --short HEAD) | |
echo "COMMIT_SHA=${SHA}" >> $GITHUB_ENV | |
echo "sha=$SHA" >> $GITHUB_OUTPUT | |
- name: Setup AMXXPawn Compiler | |
uses: wopox1337/setup-amxxpawn@master | |
with: | |
version: "1.10.5461" | |
- name: Setup ReAPI includes | |
env: | |
REPO: "s1lentq/reapi" | |
run: | | |
mkdir -p dep/reapi | |
cd dep/reapi | |
curl \ | |
--silent \ | |
https://api.github.com/repos/$REPO/releases/latest | \ | |
grep "browser_download_url" | \ | |
grep -Eo 'https://[^\"]*' | \ | |
xargs wget | |
7z x *.zip | |
echo "REAPI_INCLUDE_PATH=$(pwd)/addons/amxmodx/scripting/include" >> $GITHUB_ENV | |
- name: Updating app version | |
working-directory: version/ | |
run: | | |
VERSION_FILE=version.h | |
APPVERSION_FILE=../addons/amxmodx/scripting/include/mm_incs/version.inc | |
APPVERSION_FILE_NATIVES=../addons/amxmodx/scripting/include/multimod_manager_version.inc | |
GIT_DIR=../ | |
BRANCH_NAME=master | |
MAJOR=$(cat "$VERSION_FILE" | grep -wi 'MM_VERSION_MAJOR' | sed -e 's/.*MM_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 'MM_VERSION_MINOR' | sed -e 's/.*MM_VERSION_MINOR.*[^0-9]\([0-9][0-9]*\).*/\1/i' -e 's/\r//g') | |
if [ $? -ne 0 -o "$MINOR" = "" ]; then | |
MINOR=0 | |
fi | |
MAINTENANCE=$(cat "$VERSION_FILE" | grep -i 'MM_VERSION_MAINTENANCE' | sed -e 's/.*MM_VERSION_MAINTENANCE.*[^0-9]\([0-9][0-9]*\).*/\1/i' -e 's/\r//g') | |
if [ $? -ne 0 -o "$MAINTENANCE" = "" ]; then | |
MAINTENANCE=0 | |
fi | |
COMMIT_COUNT=$(git -C "$GIT_DIR/" rev-list --count $BRANCH_NAME) | |
if [ $? -ne 0 -o "$COMMIT_COUNT" = "" ]; then | |
COMMIT_COUNT=0 | |
fi | |
NEW_VERSION_INC="$MAJOR$MINOR$MAINTENANCE$COMMIT_COUNT" | |
NEW_VERSION="$MAJOR.$MINOR.$MAINTENANCE.$COMMIT_COUNT" | |
echo "NEW_VERSION_INC=${NEW_VERSION_INC}" >> $GITHUB_ENV | |
echo "NEW_VERSION=${NEW_VERSION}" >> $GITHUB_ENV | |
echo Updating $APPVERSION_FILE, new version is '"'$NEW_VERSION'"' | |
echo -e "#if defined _mm_version_included_\r" > $APPVERSION_FILE | |
echo -e " #endinput\r" >> $APPVERSION_FILE | |
echo -e "#endif\r" >> $APPVERSION_FILE | |
echo -e "#define _mm_version_included_\r" >> $APPVERSION_FILE | |
echo -e "\r" >> $APPVERSION_FILE | |
echo -e "// MultiMod Manager version\r" >> $APPVERSION_FILE | |
echo -e "#define MM_VERSION $NEW_VERSION_INC\r" >> $APPVERSION_FILE | |
echo -e "#define MM_VERSION_MAJOR $MAJOR\r" >> $APPVERSION_FILE | |
echo -e "#define MM_VERSION_MINOR $MINOR\r" >> $APPVERSION_FILE | |
echo -e "#define MM_VERSION_MAINTENANCE $MAINTENANCE\r" >> $APPVERSION_FILE | |
echo -e "#define MM_VERSION_COMMIT $COMMIT_COUNT\r" >> $APPVERSION_FILE | |
echo -e "\r" >> $APPVERSION_FILE | |
echo -e "#define PLUGIN_VERSION fmt("v%d.%d.%d.%d", MM_VERSION_MAJOR, MM_VERSION_MINOR, MM_VERSION_MAINTENANCE, MM_VERSION_COMMIT)" >> $APPVERSION_FILE | |
echo Updating $APPVERSION_FILE_NATIVES, new version is '"'$NEW_VERSION'"' | |
echo -e "#if defined _multimod_manager_version_included_\r" > $APPVERSION_FILE_NATIVES | |
echo -e " #endinput\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#endif\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#define _multimod_manager_version_included_\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "// MultiMod Manager version\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#define MM_VERSION $NEW_VERSION_INC\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#define MM_VERSION_MAJOR $MAJOR\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#define MM_VERSION_MINOR $MINOR\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#define MM_VERSION_MAINTENANCE $MAINTENANCE\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#define MM_VERSION_COMMIT $COMMIT_COUNT\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "\r" >> $APPVERSION_FILE_NATIVES | |
echo -e "#define MM_NATIVES_API_VER fmt("v%d.%d.%d.%d", MM_VERSION_MAJOR, MM_VERSION_MINOR, MM_VERSION_MAINTENANCE, MM_VERSION_COMMIT)" >> $APPVERSION_FILE_NATIVES | |
- name: Compile AMXX plugins | |
working-directory: addons/amxmodx/scripting/ | |
env: | |
REAPI_INCLUDE: ${{ env.REAPI_INCLUDE_PATH }} | |
run: | | |
mkdir ../plugins/ | |
for sourcefile in *.sma; | |
do | |
amxxfile="`echo $sourcefile | sed -e 's/\.sma$/.amxx/'`" | |
echo -n "Compiling $sourcefile ... " | |
amxxpc $(basename $sourcefile) -o"../plugins/$(basename $amxxfile)" -i"include" -i"$REAPI_INCLUDE" | |
done | |
- name: Move files | |
run: | | |
mkdir publish | |
mv addons/ -t publish/ | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: MultiModManagerCS-${{ env.COMMIT_SHA }} | |
path: publish/* | |
publish: | |
name: "Publish" | |
runs-on: ubuntu-latest | |
needs: [build] | |
steps: | |
- name: Deploying resources artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: MultiModManagerCS-${{ needs.build.outputs.sha }} | |
- name: Packaging binaries | |
id: packaging-job | |
if: | | |
github.event_name == 'release' && | |
github.event.action == 'published' && | |
startsWith(github.ref, 'refs/tags/') | |
run: | | |
7z a -mm=Deflate -mfb=258 -mpass=15 -r MultiModManagerCS-v${{ env.NEW_VERSION }}.zip addons/ | |
- name: Publish artifacts | |
uses: softprops/action-gh-release@v2 | |
id: publish-job | |
if: | | |
startsWith(github.ref, 'refs/tags/') && | |
steps.packaging-job.outcome == 'success' | |
with: | |
files: | | |
*.zip | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |