diff --git a/.github/workflows/nuget-package.yml b/.github/workflows/nuget-package.yml index 6cc69a6..6dae53d 100644 --- a/.github/workflows/nuget-package.yml +++ b/.github/workflows/nuget-package.yml @@ -30,8 +30,8 @@ jobs: dry-run: ${{ steps.info.outputs.dry-run }} steps: - - name: Get dry run - id: get-dry-run + - name: Package information + id: package-info shell: pwsh run: | $IsMasterBranch = ('${{ github.ref_name }}' -eq 'master') @@ -178,7 +178,7 @@ jobs: path: package/*.nupkg publish: - name: Publish NuGet package + name: Publish packages runs-on: ubuntu-22.04 needs: [preflight, build-native, build-managed] environment: ${{ needs.preflight.outputs.package-env }} @@ -209,3 +209,30 @@ jobs: } else { & 'dotnet' $PushArgs } + + - name: Create GitHub release + shell: pwsh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + working-directory: package + run: | + $PackageVersion = '${{ needs.preflight.outputs.package-version }}' + $DryRun = [System.Boolean]::Parse('${{ needs.preflight.outputs.dry-run }}') + + $HashPath = 'checksums' + $Files = Get-Item * | % { Get-FileHash -Algorithm SHA256 $_.FullName } + $Files | % { "$($_.Hash) $(Split-Path $_.Path -Leaf)" } | Out-File -FilePath $HashPath -Append -Encoding ASCII + + echo "::group::checksums" + Get-Content $HashPath + echo "::endgroup::" + + $ReleaseTag = "v$Version" + $ReleaseTitle = "MsRdpEx v${Version}" + $Repository = $Env:GITHUB_REPOSITORY + + if ($DryRun) { + Write-Host "Dry Run: skipping GitHub release!" + } else { + & gh release create $ReleaseTag --repo $Repository --title $ReleaseTitle ./* + } diff --git a/CMakeLists.txt b/CMakeLists.txt index 8709768..17362e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,18 +11,20 @@ include(CMakePackageConfigHelpers) include(WindowsRC) file(STRINGS "${CMAKE_SOURCE_DIR}/dotnet/Devolutions.MsRdpEx/Devolutions.MsRdpEx.csproj" CSPROJ_LINES) -foreach(CSPROJ_LINE ${CSPROJ_LINES}) - if(CSPROJ_LINE MATCHES ".*") - string(REGEX REPLACE "(.*)" "\\1" VERSION_STRING ${CSPROJ_LINE}) - string(STRIP ${VERSION_STRING} VERSION_STRING) +foreach(CSPROJ_LINE IN LISTS CSPROJ_LINES) + if(CSPROJ_LINE MATCHES "([0-9]+.[0-9]+.[0-9]+.[0-9]+)") + set(VERSION_STRING "${CMAKE_MATCH_1}") break() endif() endforeach() - -string(REGEX REPLACE "([0-9]+).[0-9]+.[0-9]+.[0-9]+" "\\1" MSRDPEX_VERSION_MAJOR ${VERSION_STRING}) -string(REGEX REPLACE "[0-9]+.([0-9]+).[0-9]+.[0-9]+" "\\1" MSRDPEX_VERSION_MINOR ${VERSION_STRING}) -string(REGEX REPLACE "[0-9]+.[0-9]+.([0-9]+).[0-9]+" "\\1" MSRDPEX_VERSION_PATCH ${VERSION_STRING}) -string(REGEX REPLACE "[0-9]+.[0-9]+.[0-9]+.([0-9]+)" "\\1" MSRDPEX_VERSION_BUILD ${VERSION_STRING}) +string(REGEX MATCH "([0-9]+).[0-9]+.[0-9]+.[0-9]+" _ ${VERSION_STRING}) +set(MSRDPEX_VERSION_MAJOR ${CMAKE_MATCH_1}) +string(REGEX MATCH "[0-9]+.([0-9]+).[0-9]+.[0-9]+" _ ${VERSION_STRING}) +set(MSRDPEX_VERSION_MINOR ${CMAKE_MATCH_1}) +string(REGEX MATCH "[0-9]+.[0-9]+.([0-9]+).[0-9]+" _ ${VERSION_STRING}) +set(MSRDPEX_VERSION_PATCH ${CMAKE_MATCH_1}) +string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+.([0-9]+)" _ ${VERSION_STRING}) +set(MSRDPEX_VERSION_BUILD ${CMAKE_MATCH_1}) set(MSRDPEX_VERSION "${MSRDPEX_VERSION_MAJOR}.${MSRDPEX_VERSION_MINOR}.${MSRDPEX_VERSION_PATCH}.${MSRDPEX_VERSION_BUILD}") message(STATUS "VERSION: ${MSRDPEX_VERSION}")