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}")