192 lines
5.5 KiB
YAML
192 lines
5.5 KiB
YAML
name: Format
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- develop
|
|
pull_request:
|
|
branches-ignore:
|
|
- main
|
|
|
|
jobs:
|
|
dotnet-format:
|
|
if: "!contains(github.event.head_commit.message, 'Format Style Fixes')"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.BYPASS_WORKFLOW_PAT || github.token }}
|
|
|
|
- name: Setup .NET
|
|
uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: 9.0
|
|
|
|
- name: Restore Tool Dependencies
|
|
run: dotnet tool install -g csharpier
|
|
|
|
- name: CSharpier Format
|
|
run: csharpier format .
|
|
|
|
- name: Check for Changes
|
|
id: check-changes
|
|
run: |
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "changes=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "changes=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Upload Changes as Artifact
|
|
if: steps.check-changes.outputs.changes == 'true' && github.event_name != 'pull_request'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: dotnet-changes
|
|
path: |
|
|
**/*.cs
|
|
**/*.csproj
|
|
retention-days: 1
|
|
compression-level: 1
|
|
|
|
- name: Fail PR if Changes Detected
|
|
if: steps.check-changes.outputs.changes == 'true' && github.event_name == 'pull_request'
|
|
run: |
|
|
echo "::error::Code formatting issues found. Please run 'csharpier format .' locally and push the changes to your PR branch. Read the 'README.md' file for more information."
|
|
git status --porcelain
|
|
exit 1
|
|
|
|
biome-format:
|
|
if: "!contains(github.event.head_commit.message, 'Format Style Fixes')"
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.BYPASS_WORKFLOW_PAT || github.token }}
|
|
|
|
- name: Setup Biome
|
|
uses: biomejs/setup-biome@v2
|
|
with:
|
|
version: latest
|
|
|
|
- name: Create Biome Config
|
|
run: |
|
|
cat > biome.json << 'EOF'
|
|
{
|
|
"vcs": {
|
|
"enabled": true,
|
|
"clientKind": "git",
|
|
"useIgnoreFile": true
|
|
},
|
|
"files": {
|
|
"maxSize": 20971520,
|
|
"includes": [
|
|
"**/*.json",
|
|
"!**/looseLoot.json",
|
|
"!**/items.json"
|
|
]
|
|
},
|
|
"formatter": {
|
|
"useEditorconfig": true
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"enabled": false
|
|
}
|
|
},
|
|
"json": {
|
|
"formatter": {
|
|
"enabled": true,
|
|
"lineWidth": 120,
|
|
"trailingCommas": "none",
|
|
"bracketSpacing": true,
|
|
"expand": "always"
|
|
},
|
|
"parser": {
|
|
"allowComments": true,
|
|
"allowTrailingCommas": true
|
|
},
|
|
"linter": {
|
|
"enabled": false
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
|
|
- name: Format JSON Files
|
|
run: |
|
|
biome format --write . || true
|
|
|
|
- name: Remove Biome Config
|
|
if: always()
|
|
run: rm -f biome.json
|
|
|
|
- name: Check for Changes
|
|
id: check-changes
|
|
run: |
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "changes=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "changes=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Upload Changes as Artifact
|
|
if: steps.check-changes.outputs.changes == 'true' && github.event_name != 'pull_request'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: biome-changes
|
|
path: |
|
|
**/*.json
|
|
retention-days: 1
|
|
compression-level: 1
|
|
|
|
- name: Fail PR if Changes Detected
|
|
if: steps.check-changes.outputs.changes == 'true' && github.event_name == 'pull_request'
|
|
run: |
|
|
echo "::error::JSON formatting issues found. Please run BiomeJS locally to format your JSON files and push the changes to your PR branch."
|
|
git status --porcelain
|
|
exit 1
|
|
|
|
commit-changes:
|
|
if: github.event_name != 'pull_request' && !contains(github.event.head_commit.message, 'Format Style Fixes')
|
|
needs: [dotnet-format, biome-format]
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
token: ${{ secrets.BYPASS_WORKFLOW_PAT || github.token }}
|
|
|
|
- name: Download Dotnet Changes
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: dotnet-changes
|
|
continue-on-error: true
|
|
|
|
- name: Download Biome Changes
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: biome-changes
|
|
continue-on-error: true
|
|
|
|
- name: Check for Any Changes
|
|
id: check-changes
|
|
run: |
|
|
if [[ -n $(git status --porcelain) ]]; then
|
|
echo "changes=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "changes=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Auto Commit Changes
|
|
if: steps.check-changes.outputs.changes == 'true'
|
|
uses: stefanzweifel/git-auto-commit-action@v6
|
|
with:
|
|
commit_message: Format Style Fixes
|
|
commit_user_name: sp-tarkov-bot
|
|
commit_user_email: singleplayertarkov@gmail.com
|
|
commit_author: sp-tarkov-bot <singleplayertarkov@gmail.com>
|