Skip to content

C# Compiler

C# Compiler #43

Workflow file for this run

name: Compiler
on:
push:
branches: [master]
paths:
- 'src/**'
- 'compiled/**'
- 'utils/Compiler.ps1'
- '.github/workflows/compiler.yaml'
pull_request:
paths: ['src/**', 'compiled/**', 'utils/Compiler.ps1']
jobs:
changes:
runs-on: ubuntu-latest
outputs:
compiled: ${{ steps.changes.outputs.compiled }}
src: ${{ steps.changes.outputs.src }}
src_deleted: ${{ steps.changes.outputs.src_deleted }}
steps:
- name: Checkout
uses: actions/checkout@v4
# Checks for changes in the 'compiled' and 'src' directories
# We include 'utils/Compiler.ps1' in the 'src' directory incase it is modified
# As this can affect all scripts in the src directory.
# We also check for deleted files so we can cleanup the compiled directory
- name: Collect Changes for Upcoming Jobs
uses: dorny/[email protected]
id: changes
with:
list-files: shell
filters: |
compiled:
- 'compiled/**'
src:
- 'src/**'
- 'utils/Compiler.ps1'
src_deleted:
- deleted: 'src/**'
protect-directory:
runs-on: ubuntu-latest
needs: changes
# Only run if changes have been made to the 'compiled' directory
if: ${{ needs.changes.outputs.compiled == 'true' && github.actor != 'github-actions' }}
steps:
- name: Checkout
uses: actions/checkout@v4
# Don't run if the push was forced, as this is likely a cleanup.
- if: ${{ github.event_name != 'push' && !github.event.forced }}
run: |
echo "Manual changes to 'compiled' directory are not allowed."
exit 1
cleanup-directory:
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.src_deleted == 'true'
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Delete Compiled versions of deleted files
id: delete_files
run: |
for file in $(find compiled -type f); do
no_prefix=${file#compiled/}
if [ ! -f "src/${no_prefix}" ]; then
echo ::set-output name=found_deleted::true
echo "Found deleted src file ${no_prefix}, deleting compiled version."
rm $file
fi
done
- name: Commit Changes
if: ${{ steps.delete_files.outputs.found_deleted == 'true' && github.event_name == 'push' }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: 'chore(compiled): Remove compiled versions of deleted files'
compile-scripts:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.src == 'true' }}
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Compile Scripts
shell: pwsh
run: ./utils/Invoke-CompileAllScripts.ps1
- name: Commit Changes
if: ${{ needs.changes.outputs.src == 'true' && github.event_name == 'push' }}
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: 'chore(compiled): Compile scripts'