diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..9b72f4d
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,87 @@
+name: Create Release
+
+on:
+ workflow_dispatch:
+ inputs:
+ prerelease:
+ description: Prerelease
+ type: boolean
+ bypassCheck:
+ description: Bypass Version Check
+ type: boolean
+
+env:
+ PROJ_USERNAME: MegaPiggy
+ PROJ_NAME: GhostTranslations
+
+jobs:
+ pre_job:
+ name: Check For Other Releases
+ outputs:
+ version: ${{ steps.out.outputs.version }}
+ exists: ${{ steps.out.outputs.exists }}
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: "actions/checkout@v3"
+
+ - name: Fetch
+ run: git fetch
+
+ - name: Read Manifest
+ id: read-manifest
+ run: echo "manifest=$(< ./${{ env.PROJ_NAME }}/manifest.json sed ':a;N;$!ba;s/\n/ /g')" >> $GITHUB_OUTPUT
+
+ - name: Check For Release
+ id: check-tag
+ run: echo "exists=$(git ls-remote --exit-code --tags origin ${{ env.TAG }} >/dev/null 2>&1 && echo true || echo false)" >> $GITHUB_OUTPUT
+ env:
+ TAG: "v${{fromJson(steps.read-manifest.outputs.manifest).version}}"
+
+ - name: Output Version Info
+ id: out
+ run: |
+ echo "version=${{fromJson(steps.read-manifest.outputs.manifest).version}}" >> $GITHUB_OUTPUT
+ echo "exists=${{steps.check-tag.outputs.exists}}" >> $GITHUB_OUTPUT
+
+ - name: Error
+ if: ${{ steps.out.outputs.exists != 'false' && (!inputs.bypassCheck) }}
+ 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"
+ release:
+ needs: pre_job
+ if: ${{ (needs.pre_job.outputs.version != '0.0.0') && (needs.pre_job.outputs.exists == 'false') || (inputs.bypassCheck) }}
+ name: Create Release
+ runs-on: windows-latest
+ steps:
+ - name: Checkout
+ uses: "actions/checkout@v3"
+
+ - name: Setup .NET
+ uses: "actions/setup-dotnet@v3"
+
+ - name: Remove .csproj.user
+ run: if (Test-Path ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user) { rm ${{ env.PROJ_NAME }}/${{ env.PROJ_NAME }}.csproj.user }
+
+ - name: Build Mod
+ run: dotnet build -c Release
+
+ - name: Upload Artifact
+ uses: "actions/upload-artifact@v3"
+ with:
+ name: "${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}"
+ path: "${{ env.PROJ_NAME }}/bin/Release"
+
+ - name: Zip For Release
+ run: 7z a ${{ env.PROJ_USERNAME }}.${{ env.PROJ_NAME }}.zip ./${{ env.PROJ_NAME }}/bin/Release/**
+
+ - name: Create Release
+ uses: "ncipollo/release-action@v1"
+ with:
+ allowUpdates: true
+ commit: ${{ github.ref_name }}
+ tag: v${{ needs.pre_job.outputs.version }}
+ name: Version ${{ needs.pre_job.outputs.version }}
+ omitBodyDuringUpdate: true
+ artifacts: "${{ env.PROJ_USERNAME}}.${{ env.PROJ_NAME }}.zip"
+ draft: true
+ prerelease: ${{ inputs.prerelease }}
\ No newline at end of file
diff --git a/GhostTranslations/GhostTranslations.csproj b/GhostTranslations/GhostTranslations.csproj
index adc18f9..a29ab62 100644
--- a/GhostTranslations/GhostTranslations.csproj
+++ b/GhostTranslations/GhostTranslations.csproj
@@ -12,7 +12,6 @@
MegaPiggy
$(ProjectName)
$(ProjectName)
- Build
$(Authors).$(MSBuildProjectName)
portable