From 736e95a4b2b7a9bf3fd381a74038e001ff03d42e Mon Sep 17 00:00:00 2001 From: muczc1wek <110698397+muczc1wek@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:31:00 +0200 Subject: [PATCH] Add GitHub Actions --- .github/workflows/build.yml | 98 ++++++++++++++++++++++++++++++++++ .github/workflows/on-push.yml | 18 +++++++ .github/workflows/release.yml | 56 +++++++++++++++++++ CMakeLists.txt | 15 ++++++ set-version.ps1 | 33 ++++++++++++ vdf/GothicVDFS.exe | Bin 0 -> 72704 bytes vdf/License.txt | 43 +++++++++++++++ vdf/script.vs.in | 8 +++ vdf/vdf.cmake | 2 + 9 files changed, 273 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/on-push.yml create mode 100644 .github/workflows/release.yml create mode 100644 set-version.ps1 create mode 100644 vdf/GothicVDFS.exe create mode 100644 vdf/License.txt create mode 100644 vdf/script.vs.in create mode 100644 vdf/vdf.cmake diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..a9760e4 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,98 @@ +name: Build CMake Project +on: + workflow_call: + secrets: + SSH_KEY: + required: false + description: SSH private key for pushing version changes + inputs: + cmake-preset: + required: true + type: string + upload-artifact-dll: + required: false + type: string + default: false + upload-artifact-vdf: + required: false + type: string + default: false + msvc-toolkit: + required: false + type: string + default: 14.4 + project-version: + required: false + type: string + default: false + push-version-commit: + required: false + type: boolean + default: false + push-version-branch: + required: false + type: string + default: main +jobs: + build: + name: MSVC / Windows 2022 + runs-on: windows-2022 + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - uses: TheMrMilchmann/setup-msvc-dev@v3 + with: + arch: x86 + toolset: ${{ inputs.msvc-toolkit }} + export-path-to-vcvarsall: VCVARSALL + - name: CMake Setup + uses: lukka/get-cmake@latest + - uses: actions/checkout@v4 + with: + submodules: recursive + persist-credentials: false + - name: Set project version + if: ${{ inputs.project-version != 'false' }} + run: powershell ./set-version.ps1 ${{ inputs.project-version }} + - name: Setup token for branch rules bypass + uses: webfactory/ssh-agent@v0.9.0 + if: ${{ inputs.push-version-commit == true }} + with: + ssh-private-key: ${{ secrets.SSH_KEY }} + - name: Commit version change + if: ${{ inputs.push-version-commit == true }} + run: | + New-Item -ItemType Directory -Force -Path ~/.ssh + ssh-keyscan github.com >> ~/.ssh/known_hosts + git config --global user.name "Nekobot" + git config --global user.email "nekobot-service.noreply@silveroreteam.pl" + git remote set-url origin git@github.com:Silver-Ore-Team/zMultilogue.git + git fetch --all + git checkout ${{ inputs.push-version-branch }} + $changes = $(git status -s) + if ($changes) { + git add CMakeLists.txt + git commit -m "[skip ci] set project version to ${{ inputs.project-version }}" + git push origin ${{ inputs.push-version-branch }} + } else { + echo "No changes to commit" + } + - name: CMake Configure + run: cmake --preset ${{ inputs.cmake-preset }} + - name: Ninja Build + run: ninja -C out/build/${{ inputs.cmake-preset }} -j 20 + - name: CMake Install + run: cmake --install out/build/${{ inputs.cmake-preset }} --prefix out/install/${{ inputs.cmake-preset }} + - name: Archive DLL + if: ${{ inputs.upload-artifact-dll != 'false' }} + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.upload-artifact-dll }} + path: out/install/${{ inputs.cmake-preset }}/bin/*.dll + - name: Archive VDF + uses: actions/upload-artifact@v4 + if: ${{ inputs.upload-artifact-vdf != 'false' }} + with: + name: ${{ inputs.upload-artifact-vdf }} + path: out/install/${{ inputs.cmake-preset }}/*.vdf \ No newline at end of file diff --git a/.github/workflows/on-push.yml b/.github/workflows/on-push.yml new file mode 100644 index 0000000..da245a3 --- /dev/null +++ b/.github/workflows/on-push.yml @@ -0,0 +1,18 @@ +name: On Push +permissions: write-all +on: + pull_request: + branches: [ "main"] + push: + branches: [ "main", "ci"] + paths-ignore: + - 'README.md' + - 'docs/**' +jobs: + build-release: + name: Build Release + uses: ./.github/workflows/build.yml + with: + cmake-preset: x86-release + upload-artifact-dll: release-dll + upload-artifact-vdf: release-vdf \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1e5021c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,56 @@ +name: Release +permissions: write-all +on: + push: + tags: + - 'v*' +jobs: + build-release: + name: Build Release + uses: ./.github/workflows/build.yml + secrets: + SSH_KEY: ${{ secrets.NEKOBOCIK_SSH_KEY }} + with: + cmake-preset: x86-release + upload-artifact-dll: release-dll + upload-artifact-vdf: release-vdf + project-version: ${{ github.ref_name }} + push-version-commit: true + publish: + name: Publish Release + runs-on: windows-2022 + needs: + - build-release + steps: + - name: Download Release DLL + uses: actions/download-artifact@v4 + with: + name: release-dll + path: out/install/x86-release/bin/ + - name: Download Release VDF + uses: actions/download-artifact@v4 + with: + name: release-vdf + path: out/install/x86-release/ + - name: Prepare Release Files + id: prepare-release + shell: powershell + env: + GITHUB_REF: ${{ github.ref_name }} + run: | + $tag = $env:GITHUB_REF -replace '^refs/tags/', '' + Compress-Archive out/install/x86-release/bin/* zMultilogue-${tag}.zip + Copy-Item out/install/x86-release/zMultilogue.vdf zMultilogue-${tag}.vdf + $prerelease = if (-not ($tag -match '^v?(\d+\.\d+\.\d+)$')) { 'true' } else { 'false' } + echo "prerelease=${prerelease}" >> $env:GITHUB_OUTPUT + - name: Release + uses: softprops/action-gh-release@v2 + with: + token: ${{ github.token }} + generate_release_notes: true + fail_on_unmatched_files: true + draft: true + prerelease: ${{ steps.prepare-release.outputs.prerelease }} + files: | + zMultilogue-*.zip + zMultilogue-*.vdf \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index e33f8c6..ac3a2b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,3 +38,18 @@ target_compile_options(zMultilogue PRIVATE /external:I ${CMAKE_BINARY_DIR}/_deps ) + +install(FILES $ "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.dll" TYPE BIN) + +configure_file("${CMAKE_SOURCE_DIR}/vdf/script.vs.in" "${CMAKE_BINARY_DIR}/script.vs") + +install(FILES $ "${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.dll" TYPE BIN) +install(FILES "${CMAKE_BINARY_DIR}/script.vs" DESTINATION "${CMAKE_INSTALL_PREFIX}") +install(SCRIPT "${CMAKE_SOURCE_DIR}/vdf/vdf.cmake") +install(CODE "execute_process(COMMAND ${CMAKE_SOURCE_DIR}/vdf/GothicVDFS.exe /B \"${CMAKE_INSTALL_PREFIX}/script.vs\" WORKING_DIRECTORY \"${CMAKE_INSTALL_PREFIX}\")") + +string(REPLACE "build" "install" INSTALL_DIR "${CMAKE_BINARY_DIR}") +add_custom_target(${CMAKE_PROJECT_NAME}_vdf ALL + COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR} --prefix ${INSTALL_DIR} + DEPENDS ${CMAKE_PROJECT_NAME} + COMMENT "Run install to build VDF") \ No newline at end of file diff --git a/set-version.ps1 b/set-version.ps1 new file mode 100644 index 0000000..a02eb6f --- /dev/null +++ b/set-version.ps1 @@ -0,0 +1,33 @@ +$version = $args[0] + +if ($version -match 'rollback') { + if (Test-Path ./CMakeLists.txt.bak -PathType Leaf) { + Remove-Item CMakeLists.txt -Force + Move-Item CMakeLists.txt.bak CMakeLists.txt + Write-Host "CMakeLists.txt.bak does not exist. Cannot rollback." + } else { + Write-Host "CMakeLists.txt.bak does not exist. Cannot rollback." + exit 2 + } + exit 0 +} + +if (-not ($version -match '^v?(\d+\.\d+\.\d+)(-[a-z0-9]+)?')) { + Write-Host "Version must follow format: 1.2.3 or v1.2.3 or 1.2.3-alpha" + Write-Host "Usage: set-version.ps1 [version]" + exit 1 +} + +if (Test-Path ./CMakeLists.txt.bak -PathType Leaf) { + Write-Host "CMakeLists.txt.bak exists. Delete this file to set new version." + exit 3 +} + +$version = $version -replace '^v', '' +$cmakeVersion = $version -replace '-[a-z0-9]+$', '' +Write-Host "Setting version to $version" + +Copy-Item CMakeLists.txt CMakeLists.txt.bak +$cmake = (Get-Content -Path ./CMakeLists.txt) -replace 'set\(PROJECT_VERSION "[^"]*"\)', "set(PROJECT_VERSION ""$version"")" +$cmake = (Get-Content -Path ./CMakeLists.txt) -replace 'set\(PROJECT_VERSION_CMAKE "[^"]*"\)', "set(PROJECT_VERSION_CMAKE ""$cmakeVersion"")" +$cmake | Set-Content -Path ./CMakeLists.txt \ No newline at end of file diff --git a/vdf/GothicVDFS.exe b/vdf/GothicVDFS.exe new file mode 100644 index 0000000000000000000000000000000000000000..414902ebb222dd152162f6125ce09ef970fadae0 GIT binary patch literal 72704 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 literal 0 HcmV?d00001 diff --git a/vdf/License.txt b/vdf/License.txt new file mode 100644 index 0000000..96227a4 --- /dev/null +++ b/vdf/License.txt @@ -0,0 +1,43 @@ + +GothicVDFS 2.6 (mod) +=================== + +What for... +ŻŻŻŻŻŻŻŻŻŻŻ +This tool is intended to view, extract, and build +Virtual Disk File System (VDFS) volumes for Gothic II. + +Usage +ŻŻŻŻŻ +This simple program is self-explanatory - just use it. + +Legal Stuff +ŻŻŻŻŻŻŻŻŻŻŻ +Copyright (c) 2001-2003, Nico Bendlin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from this + software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +Note: VDFS is Copyright (c) 1994-2002, Peter Sabath / TRIACOM Software GmbH diff --git a/vdf/script.vs.in b/vdf/script.vs.in new file mode 100644 index 0000000..52d7785 --- /dev/null +++ b/vdf/script.vs.in @@ -0,0 +1,8 @@ +[BEGINVDF] +Comment=zMultilogue v${CMAKE_PROJECT_VERSION}%%Nhttps://github.com/Silver-Ore-Team/zMultilogue%%N2024 Silver Ore Team +BaseDir=vdf +VDFName=zMultilogue.vdf +[FILES] +System\Autorun\*.dll +System\*.dll +[ENDVDF] \ No newline at end of file diff --git a/vdf/vdf.cmake b/vdf/vdf.cmake new file mode 100644 index 0000000..bb2cf55 --- /dev/null +++ b/vdf/vdf.cmake @@ -0,0 +1,2 @@ +file(MAKE_DIRECTORY "${CMAKE_INSTALL_PREFIX}/vdf/System/Autorun") +file(COPY "${CMAKE_INSTALL_PREFIX}/bin/zMultilogue.dll" DESTINATION "${CMAKE_INSTALL_PREFIX}/vdf/System/Autorun") \ No newline at end of file