Skip to content

New version control #81

New version control

New version control #81

Workflow file for this run

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 }}