10 Commits
Author SHA1 Message Date
dutchie031 1101b0e17e updated references 2026-07-25 00:08:56 +02:00
dutchie031 fb14350854 updated references 2026-07-25 00:00:54 +02:00
dutchie031 13083548b2 updated references 2026-07-25 00:00:32 +02:00
dutchie031 4f213c72ee Feature/pipeline (#2)
Reviewed-on: #2
Co-authored-by: dutchie031 <timrorije@gmail.com>
2026-07-24 21:58:55 +00:00
dutchie031 4cc0d19cbe renamed workflows to gitea (#1)
Reviewed-on: #1
Co-authored-by: dutchie031 <timrorije@gmail.com>
2026-07-24 21:48:01 +00:00
dutchie031 14b4a974d6 merged DcsTools 2026-07-24 13:58:44 +02:00
dutchie031 57cf7bd0f9 wip 2026-07-24 13:56:56 +02:00
dutchie031ex61widutchie031 <dutchie031>
128aed1d2b Dcs lua tool (#66)
* custom drawings and animations for video

* wip

* Work in progress refactor for toolkit

* wip

* Refactored everything for Lua Compile Tool

* Trying out the github action

* updated the github action ref

* initial working version

---------

Co-authored-by: ex61wi <tim.rorije@ing.com>
Co-authored-by: dutchie031 <dutchie031>
2026-06-06 19:26:32 +02:00
dutchie031 c2f97dbe93 initial working version 2026-06-06 19:10:03 +02:00
dutchie031 dc16766313 updated the github action ref 2026-04-25 21:54:28 +02:00
10 changed files with 232 additions and 288 deletions
@@ -13,13 +13,13 @@ jobs:
fetch-depth: 0
- name: Compile Spearhead
uses: dutchie031/DcsMissionScriptingTools/github-action@feature/github-action
uses: https://git.dutchie031.com/dutchie031/DcsMissionScriptingTools/github-action@action/v0
with:
source-root: ./src
output-file: ./output/spearhead.lua
- name: Upload spearhead.lua artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v3
with:
name: spearhead-lua
path: ./output/spearhead.lua
+67
View File
@@ -0,0 +1,67 @@
name: Publish Release
on:
push:
branches:
- main
paths:
- version.txt
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Read Version from version.txt
id: read_version
run: |
VERSION=$(cat version.txt)
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"
echo "Version: $VERSION"
- name: Compile Spearhead
uses: https://git.dutchie031.com/dutchie031/DcsMissionScriptingTools/github-action@action/v0
with:
source-root: ./src
output-file: ./output/spearhead.lua
- name: Check for existing tag
id: check_tag
run: |
if git tag | grep -q "^${{ steps.read_version.outputs.tag }}$"; then
echo "Tag already exists. Exiting."
exit 1
fi
- name: Apply Tag to Current Commit
run: |
git config user.name "github-actions"
git config user.email "github-actions@github.com"
git tag ${{ steps.read_version.outputs.tag }}
git push origin ${{ steps.read_version.outputs.tag }}
- name: Copy Release to Versioned File
run: |
cp ./output/spearhead.lua ./output/spearhead.${{ steps.read_version.outputs.tag }}.lua
echo "Versioned file created: spearhead.${{ steps.read_version.outputs.tag }}.lua"
- name: Create Release and Upload Assets
uses: akkuman/gitea-release-action@v1
with:
tag_name: ${{ steps.read_version.outputs.tag }}
name: Release ${{ steps.read_version.outputs.tag }}
draft: true
files: |-
./output/spearhead.lua
./output/spearhead.${{ steps.read_version.outputs.tag }}.lua
#token: ${{ secrets.GITHUB_TOKEN }}
env:
NODE_OPTIONS: '--experimental-fetch'
@@ -1,135 +1,135 @@
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
release:
types: [published]
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get latest stable release
id: latest_release
run: |
# Use GitHub API to get the latest stable release
release_data=$(curl -s -w "%{http_code}" https://api.github.com/repos/${{ github.repository }}/releases/latest -o response.json)
# Check if we got a successful response (200) or if there are no releases (404)
if [ "$release_data" = "200" ]; then
# Extract the tag name and published date from the successful response
latest_release=$(cat response.json | jq -r .tag_name)
release_date=$(cat response.json | jq -r .published_at | cut -d'T' -f1)
# Format the date nicely
formatted_date=$(date -d "$release_date" +"%B %d, %Y")
# Set the outputs
echo "tag=$latest_release" >> $GITHUB_OUTPUT
echo "date=$formatted_date" >> $GITHUB_OUTPUT
# Print for debugging
echo "Latest stable release: $latest_release, published on: $formatted_date"
else
echo "No stable releases found"
echo "tag=No stable release" >> $GITHUB_OUTPUT
echo "date=Not available" >> $GITHUB_OUTPUT
fi
- name: Get latest beta release
id: latest_beta
run: |
# Use GitHub API to get all releases including prereleases
releases_data=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases)
# Extract the first prerelease (most recent) using jq
beta_data=$(echo "$releases_data" | jq -c '.[] | select(.prerelease==true)' | head -n 1)
# Check if a beta release exists
if [ -z "$beta_data" ]; then
echo "No beta releases found"
echo "tag=None" >> $GITHUB_OUTPUT
echo "date=Not available" >> $GITHUB_OUTPUT
else
# Extract the tag name and published date
beta_release=$(echo "$beta_data" | jq -r .tag_name)
beta_date=$(echo "$beta_data" | jq -r .published_at | cut -d'T' -f1)
# Format the date nicely
formatted_date=$(date -d "$beta_date" +"%B %d, %Y")
# Set the outputs
echo "tag=$beta_release" >> $GITHUB_OUTPUT
echo "date=$formatted_date" >> $GITHUB_OUTPUT
# Print for debugging
echo "Latest beta release: $beta_release, published on: $formatted_date"
fi
# Example of using the release info in subsequent steps
- name: Update version in documentation
run: |
echo "Updating documentation with stable version: ${{ steps.latest_release.outputs.tag }}"
echo "Stable release date: ${{ steps.latest_release.outputs.date }}"
echo "Updating documentation with beta version: ${{ steps.latest_beta.outputs.tag }}"
echo "Beta release date: ${{ steps.latest_beta.outputs.date }}"
# Replace stable version placeholders
find _docs -type f -name "*.html" -exec sed -i "s/#{VERSION}#/${{ steps.latest_release.outputs.tag }}/g" {} \;
find _docs -type f -name "*.html" -exec sed -i "s/#{VERSION_DATE}#/${{ steps.latest_release.outputs.date }}/g" {} \;
# Replace beta version placeholders
find _docs -type f -name "*.html" -exec sed -i "s/#{BETA_VERSION}#/${{ steps.latest_beta.outputs.tag }}/g" {} \;
find _docs -type f -name "*.html" -exec sed -i "s/#{BETA_VERSION_DATE}#/${{ steps.latest_beta.outputs.date }}/g" {} \;
- name: Install Python and Pygments
run: |
python3 -m pip install --upgrade pip
pip install pygments
- name: Highlight API code and update HTML
run: |
pygmentize -f html -l lua -O noclasses,style=monokai classes/api/SpearheadApiDoc.lua > _docs/pages/temp_api_code.html
# Insert the highlighted code into the placeholder in spearheadapi.html
sed -i '/@@API_CODE@@/r _docs/pages/temp_api_code.html' _docs/pages/spearheadapi.html
sed -i '/@@API_CODE@@/d' _docs/pages/spearheadapi.html
rm _docs/pages/temp_api_code.html
- name: Highlight API code and update HTML
run: |
pygmentize -f html -l lua -O noclasses,style=monokai ./config.lua > _docs/pages/temp_config_code.html
# Insert the highlighted code into the placeholder in spearheadapi.html
sed -i '/@@CONFIG_CODE@@/r _docs/pages/temp_config_code.html' _docs/pages/reference.html
sed -i '/@@CONFIG_CODE@@/d' _docs/pages/reference.html
rm _docs/pages/temp_config_code.html
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './_docs'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
# Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
release:
types: [published]
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Single deploy job since we're just deploying
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Get latest stable release
id: latest_release
run: |
# Use GitHub API to get the latest stable release
release_data=$(curl -s -w "%{http_code}" https://api.github.com/repos/${{ github.repository }}/releases/latest -o response.json)
# Check if we got a successful response (200) or if there are no releases (404)
if [ "$release_data" = "200" ]; then
# Extract the tag name and published date from the successful response
latest_release=$(cat response.json | jq -r .tag_name)
release_date=$(cat response.json | jq -r .published_at | cut -d'T' -f1)
# Format the date nicely
formatted_date=$(date -d "$release_date" +"%B %d, %Y")
# Set the outputs
echo "tag=$latest_release" >> $GITHUB_OUTPUT
echo "date=$formatted_date" >> $GITHUB_OUTPUT
# Print for debugging
echo "Latest stable release: $latest_release, published on: $formatted_date"
else
echo "No stable releases found"
echo "tag=No stable release" >> $GITHUB_OUTPUT
echo "date=Not available" >> $GITHUB_OUTPUT
fi
- name: Get latest beta release
id: latest_beta
run: |
# Use GitHub API to get all releases including prereleases
releases_data=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases)
# Extract the first prerelease (most recent) using jq
beta_data=$(echo "$releases_data" | jq -c '.[] | select(.prerelease==true)' | head -n 1)
# Check if a beta release exists
if [ -z "$beta_data" ]; then
echo "No beta releases found"
echo "tag=None" >> $GITHUB_OUTPUT
echo "date=Not available" >> $GITHUB_OUTPUT
else
# Extract the tag name and published date
beta_release=$(echo "$beta_data" | jq -r .tag_name)
beta_date=$(echo "$beta_data" | jq -r .published_at | cut -d'T' -f1)
# Format the date nicely
formatted_date=$(date -d "$beta_date" +"%B %d, %Y")
# Set the outputs
echo "tag=$beta_release" >> $GITHUB_OUTPUT
echo "date=$formatted_date" >> $GITHUB_OUTPUT
# Print for debugging
echo "Latest beta release: $beta_release, published on: $formatted_date"
fi
# Example of using the release info in subsequent steps
- name: Update version in documentation
run: |
echo "Updating documentation with stable version: ${{ steps.latest_release.outputs.tag }}"
echo "Stable release date: ${{ steps.latest_release.outputs.date }}"
echo "Updating documentation with beta version: ${{ steps.latest_beta.outputs.tag }}"
echo "Beta release date: ${{ steps.latest_beta.outputs.date }}"
# Replace stable version placeholders
find _docs -type f -name "*.html" -exec sed -i "s/#{VERSION}#/${{ steps.latest_release.outputs.tag }}/g" {} \;
find _docs -type f -name "*.html" -exec sed -i "s/#{VERSION_DATE}#/${{ steps.latest_release.outputs.date }}/g" {} \;
# Replace beta version placeholders
find _docs -type f -name "*.html" -exec sed -i "s/#{BETA_VERSION}#/${{ steps.latest_beta.outputs.tag }}/g" {} \;
find _docs -type f -name "*.html" -exec sed -i "s/#{BETA_VERSION_DATE}#/${{ steps.latest_beta.outputs.date }}/g" {} \;
- name: Install Python and Pygments
run: |
python3 -m pip install --upgrade pip
pip install pygments
- name: Highlight API code and update HTML
run: |
pygmentize -f html -l lua -O noclasses,style=monokai classes/api/SpearheadApiDoc.lua > _docs/pages/temp_api_code.html
# Insert the highlighted code into the placeholder in spearheadapi.html
sed -i '/@@API_CODE@@/r _docs/pages/temp_api_code.html' _docs/pages/spearheadapi.html
sed -i '/@@API_CODE@@/d' _docs/pages/spearheadapi.html
rm _docs/pages/temp_api_code.html
- name: Highlight API code and update HTML
run: |
pygmentize -f html -l lua -O noclasses,style=monokai ./config.lua > _docs/pages/temp_config_code.html
# Insert the highlighted code into the placeholder in spearheadapi.html
sed -i '/@@CONFIG_CODE@@/r _docs/pages/temp_config_code.html' _docs/pages/reference.html
sed -i '/@@CONFIG_CODE@@/d' _docs/pages/reference.html
rm _docs/pages/temp_config_code.html
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './_docs'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
-131
View File
@@ -1,131 +0,0 @@
name: Publish Release
on:
workflow_dispatch:
inputs:
release_candidate:
description: 'Is this a release candidate?'
required: true
default: true
type: boolean
change_size:
type: choice
description: Version Bump
options:
- patch
- minor
- major
default: patch
branches:
- main
- automation
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch all history for all branches and tags
- name: Run SpearheadCompile
run: |
mkdir -p ./output
python3 SpearheadCompile.py . ./output/spearhead.lua
- name: Calculate Tag
id: calculate_tag
run: |
# Get latest tag with 'v' prefix
latest_tag=$(git tag --sort=-v:refname | grep -E '^v' | head -n 1)
if [ -z "$latest_tag" ]; then
latest_tag="v0.0.0"
fi
echo "Latest tag: $latest_tag"
# Remove 'v' prefix for version parsing
version=${latest_tag#v}
IFS='.' read -r major minor patch <<< "$version"
bump="${{ inputs.change_size }}"
if [ "$bump" = "major" ]; then
major=$((major+1))
minor=0
patch=0
elif [ "$bump" = "minor" ]; then
minor=$((minor+1))
patch=0
else
patch=$((patch+1))
fi
new_tag="v${major}.${minor}.${patch}"
if [ "${{ inputs.release_candidate }}" = "true" ]; then
new_tag="$new_tag-rc"
fi
echo "New tag: $new_tag"
echo "new_tag=$new_tag" >> "$GITHUB_OUTPUT"
- name: Check for existing tag
id: check_tag
run: |
if git tag | grep -q "^${{ steps.calculate_tag.outputs.new_tag }}$"; then
echo "Tag already exists. Exiting."
exit 1
fi
- name: Generate Release Notes
id: generate_release_notes
run: |
if [ "${{ inputs.release_candidate }}" != "true" ]; then
git log $(git describe --tags --abbrev=0 $(git tag --sort=-v:refname | grep -v '-rc' | head -n 1))..HEAD --pretty=format:'- %s%n %b' > release_notes.txt
else
git log $(git describe --tags --abbrev=0)..HEAD --pretty=format:'- %s%n %b' > release_notes.txt
fi
awk -i inplace '!seen[$0]++' release_notes.txt
cat release_notes.txt
shell: bash
- name: Apply Tag to Current Commit
run: |
git config user.name "github-actions"
git config user.email "github-actions@github.com"
git tag ${{ steps.calculate_tag.outputs.new_tag }}
git push origin ${{ steps.calculate_tag.outputs.new_tag }}
- name: Copy Release to Versioned File
run: |
cp ./output/spearhead.lua ./output/spearhead.${{ steps.calculate_tag.outputs.new_tag }}.lua
echo "Versioned file created: spearhead.${{ steps.calculate_tag.outputs.new_tag }}.lua"
- name: Create GitHub Release
uses: actions/create-release@v1
id: create_release
with:
tag_name: ${{ steps.calculate_tag.outputs.new_tag }}
release_name: Release ${{ steps.calculate_tag.outputs.new_tag }}
draft: true
body_path: release_notes.txt
prerelease: ${{ inputs.release_candidate }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Spearhead.lua Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./output/spearhead.lua
asset_name: spearhead.lua
asset_content_type: application/octet-stream
- name: Upload Spearhead.lua Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./output/spearhead.${{steps.calculate_tag.outputs.new_tag}}.lua
asset_name: spearhead.${{steps.calculate_tag.outputs.new_tag}}.lua
asset_content_type: application/octet-stream
+3 -1
View File
@@ -1,4 +1,6 @@
**/.DS_Store
.DS_Store
/dist
/dist
.vscode/settings.json
+3 -1
View File
@@ -18,6 +18,8 @@
},
"livePreview.serverRoot": "/_docs",
"Lua.workspace.library": [
"/Users/ex61wi/Developer/personal/DcsMissionScriptingTools/dutchies-dcs-scripting-tools/lua-addons"
"/Users/ex61wi/Developer/personal/DcsMissionScriptingTools/dutchies-dcs-scripting-tools/lua-addons",
"c:\\Users\\Tim\\.vscode\\extensions\\dutchie031.dutchies-dcs-scripting-tools-0.0.3\\lua-addons"
],
"dutchies-dcs-scripting-tools.compileAt": "onSave",
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

+19 -14
View File
@@ -32,23 +32,28 @@
<div class="content-wrapper">
<h1 id="welcome">Welcome to Spearhead!</h1>
<h1 id="welcome">Welcome to Spearhead!</h1>
<p>Welcome to the story teller friendly mission framework in DCS (at least, that's what we hope to create).</p>
<p>Together with mission editors we've tried to build a framework that makes creating multiplayer missions as easy as possible.
With the help of naming conventions, trigger zones, pre-configured logic and custom configuration items, it gives a huge amount of versatility.
we're trying to strike a balance between no-code and low-code with the possibility to hook into it for the hard core scripters (like ourselves).
<note-box type="info">
<b>For the scripters</b>: If you yourself are a scripter, and you're missing interfaces, please reach out to us! We want to make sure that the framework is as easy to use for scripters as it is for non-scripters, and we can't do that without your help!
</note-box>
</p>
<p>
Whether this is your first mission or your hundredth, we hope Spearhead will make your life easier.
</p>
<download-spearhead></download-spearhead>
<p>Welcome to the story teller friendly mission framework in DCS (at least, that's what we hope to create).</p>
<p>Together with mission editors we've tried to build a framework that
makes creating multiplayer missions as easy as possible.
With the help of naming conventions, trigger zones, pre-configured
logic and custom configuration items, it gives a huge amount of versatility.
we're trying to strike a balance between no-code and low-code with the possibility to hook into it for
the hard core scripters.
</p>
<p>
Whether this is your first mission or your hundredth, we hope Spearhead will make your life easier.
</p>
<download-spearhead></download-spearhead>
</div>
</div>
</main>
<footer>
+2 -4
View File
@@ -37,10 +37,8 @@
Even though, at the time of writing this, I've written every single line of code myself, I could not have done it without the help of these members.<br>
Therefore it's something WE created.
Our goal was very simple, make it possible to make big dynamic missions, without having to either give away all controll or having to get knee deep into scripting. <br>
We struck a balance.
Our goal was very simple, make it possible to make big dynamic missions, without having to either give away all control or having to get knee deep into scripting. <br>
We struck a balance.
</p>
+1
View File
@@ -0,0 +1 @@
0.12.0