1+ name : Create Release
2+
3+ on :
4+ workflow_dispatch :
5+ inputs :
6+ prerelease :
7+ description : Prerelease
8+ type : boolean
9+ bypassCheck :
10+ description : Bypass Version Check
11+ type : boolean
12+
13+ env :
14+ PROJ_USERNAME : dgarro
15+ PROJ_NAME : CustomShipLogModes
16+
17+ jobs :
18+ pre_job :
19+ name : Check For Other Releases
20+ outputs :
21+ version : ${{ steps.out.outputs.version }}
22+ exists : ${{ steps.out.outputs.exists }}
23+ runs-on : ubuntu-latest
24+ steps :
25+ - name : Checkout
26+ uses : " actions/checkout@v3"
27+
28+ - name : Fetch
29+ run : git fetch
30+
31+ - name : Read Manifest
32+ id : read-manifest
33+ run : echo "manifest=$(< ./${{ env.PROJ_NAME }}/manifest.json sed ':a;N;$!ba;s/\n/ /g')" >> $GITHUB_OUTPUT
34+
35+ - name : Check For Release
36+ id : check-tag
37+ run : echo "exists=$(git ls-remote --exit-code --tags origin ${{ env.TAG }} >/dev/null 2>&1 && echo true || echo false)" >> $GITHUB_OUTPUT
38+ env :
39+ TAG : ${{fromJson(steps.read-manifest.outputs.manifest).version}}
40+
41+ - name : Output Version Info
42+ id : out
43+ run : |
44+ echo "version=${{fromJson(steps.read-manifest.outputs.manifest).version}}" >> $GITHUB_OUTPUT
45+ echo "exists=${{steps.check-tag.outputs.exists}}" >> $GITHUB_OUTPUT
46+
47+ - name : Error
48+ if : ${{ steps.out.outputs.exists != 'false' && (!inputs.bypassCheck) }}
49+ run : echo "::error file=manifest.json,title=Refusing to Release::Your mod was not released because there is already a release with the version in manifest.json"
50+ release :
51+ needs : pre_job
52+ if : ${{ (needs.pre_job.outputs.version != '0.0.0') && (needs.pre_job.outputs.exists == 'false') || (inputs.bypassCheck) }}
53+ name : Create Release
54+ runs-on : windows-latest
55+ steps :
56+ - name : Checkout
57+ uses : " actions/checkout@v3"
58+
59+ - name : Setup .NET
60+ uses : " actions/setup-dotnet@v3"
61+
62+ - name : Remove .csproj.user
63+ run : if (Test-Path ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user) { rm ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user }
64+
65+ - name : Build Mod
66+ run : dotnet build -c Release
67+
68+ - name : Upload Artifact
69+ uses : " actions/upload-artifact@v3"
70+ with :
71+ name : " ${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}"
72+ path : " ${{ env.PROJ_NAME }}/bin/Release"
73+
74+ - name : Zip For Release
75+ run : 7z a ${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}.zip ./${{ env.PROJ_NAME }}/bin/Release/**
76+
77+ - name : Create Release
78+ uses : " ncipollo/release-action@v1"
79+ with :
80+ allowUpdates : true
81+ commit : ${{ github.ref_name }}
82+ tag : ${{ needs.pre_job.outputs.version }}
83+ name : ${{ needs.pre_job.outputs.version }}
84+ omitBodyDuringUpdate : true
85+ artifacts : " ${{ env.PROJ_USERNAME}}.${{ env.PROJ_NAME }}.zip"
86+ draft : true
87+ prerelease : ${{ inputs.prerelease }}
0 commit comments