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 fetch-depth: 0
- name: Compile Spearhead - name: Compile Spearhead
uses: dutchie031/DcsMissionScriptingTools/github-action@feature/github-action uses: https://git.dutchie031.com/dutchie031/DcsMissionScriptingTools/github-action@action/v0
with: with:
source-root: ./src source-root: ./src
output-file: ./output/spearhead.lua output-file: ./output/spearhead.lua
- name: Upload spearhead.lua artifact - name: Upload spearhead.lua artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v3
with: with:
name: spearhead-lua name: spearhead-lua
path: ./output/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 # Simple workflow for deploying static content to GitHub Pages
name: Deploy static content to Pages name: Deploy static content to Pages
on: on:
# Allows you to run this workflow manually from the Actions tab # Allows you to run this workflow manually from the Actions tab
workflow_dispatch: workflow_dispatch:
release: release:
types: [published] types: [published]
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions: permissions:
contents: read contents: read
pages: write pages: write
id-token: write id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # 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. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency: concurrency:
group: "pages" group: "pages"
cancel-in-progress: false cancel-in-progress: false
jobs: jobs:
# Single deploy job since we're just deploying # Single deploy job since we're just deploying
deploy: deploy:
environment: environment:
name: github-pages name: github-pages
url: ${{ steps.deployment.outputs.page_url }} url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Get latest stable release - name: Get latest stable release
id: latest_release id: latest_release
run: | run: |
# Use GitHub API to get the latest stable release # 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) 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) # Check if we got a successful response (200) or if there are no releases (404)
if [ "$release_data" = "200" ]; then if [ "$release_data" = "200" ]; then
# Extract the tag name and published date from the successful response # Extract the tag name and published date from the successful response
latest_release=$(cat response.json | jq -r .tag_name) latest_release=$(cat response.json | jq -r .tag_name)
release_date=$(cat response.json | jq -r .published_at | cut -d'T' -f1) release_date=$(cat response.json | jq -r .published_at | cut -d'T' -f1)
# Format the date nicely # Format the date nicely
formatted_date=$(date -d "$release_date" +"%B %d, %Y") formatted_date=$(date -d "$release_date" +"%B %d, %Y")
# Set the outputs # Set the outputs
echo "tag=$latest_release" >> $GITHUB_OUTPUT echo "tag=$latest_release" >> $GITHUB_OUTPUT
echo "date=$formatted_date" >> $GITHUB_OUTPUT echo "date=$formatted_date" >> $GITHUB_OUTPUT
# Print for debugging # Print for debugging
echo "Latest stable release: $latest_release, published on: $formatted_date" echo "Latest stable release: $latest_release, published on: $formatted_date"
else else
echo "No stable releases found" echo "No stable releases found"
echo "tag=No stable release" >> $GITHUB_OUTPUT echo "tag=No stable release" >> $GITHUB_OUTPUT
echo "date=Not available" >> $GITHUB_OUTPUT echo "date=Not available" >> $GITHUB_OUTPUT
fi fi
- name: Get latest beta release - name: Get latest beta release
id: latest_beta id: latest_beta
run: | run: |
# Use GitHub API to get all releases including prereleases # Use GitHub API to get all releases including prereleases
releases_data=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases) releases_data=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases)
# Extract the first prerelease (most recent) using jq # Extract the first prerelease (most recent) using jq
beta_data=$(echo "$releases_data" | jq -c '.[] | select(.prerelease==true)' | head -n 1) beta_data=$(echo "$releases_data" | jq -c '.[] | select(.prerelease==true)' | head -n 1)
# Check if a beta release exists # Check if a beta release exists
if [ -z "$beta_data" ]; then if [ -z "$beta_data" ]; then
echo "No beta releases found" echo "No beta releases found"
echo "tag=None" >> $GITHUB_OUTPUT echo "tag=None" >> $GITHUB_OUTPUT
echo "date=Not available" >> $GITHUB_OUTPUT echo "date=Not available" >> $GITHUB_OUTPUT
else else
# Extract the tag name and published date # Extract the tag name and published date
beta_release=$(echo "$beta_data" | jq -r .tag_name) beta_release=$(echo "$beta_data" | jq -r .tag_name)
beta_date=$(echo "$beta_data" | jq -r .published_at | cut -d'T' -f1) beta_date=$(echo "$beta_data" | jq -r .published_at | cut -d'T' -f1)
# Format the date nicely # Format the date nicely
formatted_date=$(date -d "$beta_date" +"%B %d, %Y") formatted_date=$(date -d "$beta_date" +"%B %d, %Y")
# Set the outputs # Set the outputs
echo "tag=$beta_release" >> $GITHUB_OUTPUT echo "tag=$beta_release" >> $GITHUB_OUTPUT
echo "date=$formatted_date" >> $GITHUB_OUTPUT echo "date=$formatted_date" >> $GITHUB_OUTPUT
# Print for debugging # Print for debugging
echo "Latest beta release: $beta_release, published on: $formatted_date" echo "Latest beta release: $beta_release, published on: $formatted_date"
fi fi
# Example of using the release info in subsequent steps # Example of using the release info in subsequent steps
- name: Update version in documentation - name: Update version in documentation
run: | run: |
echo "Updating documentation with stable version: ${{ steps.latest_release.outputs.tag }}" echo "Updating documentation with stable version: ${{ steps.latest_release.outputs.tag }}"
echo "Stable release date: ${{ steps.latest_release.outputs.date }}" echo "Stable release date: ${{ steps.latest_release.outputs.date }}"
echo "Updating documentation with beta version: ${{ steps.latest_beta.outputs.tag }}" echo "Updating documentation with beta version: ${{ steps.latest_beta.outputs.tag }}"
echo "Beta release date: ${{ steps.latest_beta.outputs.date }}" echo "Beta release date: ${{ steps.latest_beta.outputs.date }}"
# Replace stable version placeholders # 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}#/${{ steps.latest_release.outputs.tag }}/g" {} \;
find _docs -type f -name "*.html" -exec sed -i "s/#{VERSION_DATE}#/${{ steps.latest_release.outputs.date }}/g" {} \; find _docs -type f -name "*.html" -exec sed -i "s/#{VERSION_DATE}#/${{ steps.latest_release.outputs.date }}/g" {} \;
# Replace beta version placeholders # 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}#/${{ 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" {} \; find _docs -type f -name "*.html" -exec sed -i "s/#{BETA_VERSION_DATE}#/${{ steps.latest_beta.outputs.date }}/g" {} \;
- name: Install Python and Pygments - name: Install Python and Pygments
run: | run: |
python3 -m pip install --upgrade pip python3 -m pip install --upgrade pip
pip install pygments pip install pygments
- name: Highlight API code and update HTML - name: Highlight API code and update HTML
run: | run: |
pygmentize -f html -l lua -O noclasses,style=monokai classes/api/SpearheadApiDoc.lua > _docs/pages/temp_api_code.html 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 # 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@@/r _docs/pages/temp_api_code.html' _docs/pages/spearheadapi.html
sed -i '/@@API_CODE@@/d' _docs/pages/spearheadapi.html sed -i '/@@API_CODE@@/d' _docs/pages/spearheadapi.html
rm _docs/pages/temp_api_code.html rm _docs/pages/temp_api_code.html
- name: Highlight API code and update HTML - name: Highlight API code and update HTML
run: | run: |
pygmentize -f html -l lua -O noclasses,style=monokai ./config.lua > _docs/pages/temp_config_code.html 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 # 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@@/r _docs/pages/temp_config_code.html' _docs/pages/reference.html
sed -i '/@@CONFIG_CODE@@/d' _docs/pages/reference.html sed -i '/@@CONFIG_CODE@@/d' _docs/pages/reference.html
rm _docs/pages/temp_config_code.html rm _docs/pages/temp_config_code.html
- name: Setup Pages - name: Setup Pages
uses: actions/configure-pages@v5 uses: actions/configure-pages@v5
- name: Upload artifact - name: Upload artifact
uses: actions/upload-pages-artifact@v3 uses: actions/upload-pages-artifact@v3
with: with:
path: './_docs' path: './_docs'
- name: Deploy to GitHub Pages - name: Deploy to GitHub Pages
id: deployment id: deployment
uses: actions/deploy-pages@v4 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
.DS_Store .DS_Store
/dist /dist
.vscode/settings.json
+3 -1
View File
@@ -18,6 +18,8 @@
}, },
"livePreview.serverRoot": "/_docs", "livePreview.serverRoot": "/_docs",
"Lua.workspace.library": [ "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"> <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>
</div> </div>
</main> </main>
<footer> <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> 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. 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> 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. We struck a balance.
</p> </p>
+1
View File
@@ -0,0 +1 @@
0.12.0