From 6ea8a8375944fd13d4adc6447337f05d69dffe38 Mon Sep 17 00:00:00 2001 From: Ruben Buniatyan Date: Sun, 13 Jul 2025 19:28:40 +0200 Subject: [PATCH 1/4] Add winget publisher workflow --- .github/workflows/winget.yml | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/winget.yml diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml new file mode 100644 index 0000000..acfc46a --- /dev/null +++ b/.github/workflows/winget.yml @@ -0,0 +1,58 @@ +name: Publish on Windows Package Manager + +on: + release: + types: [published] + workflow_dispatch: + inputs: + tag_name: + description: Release tag (version) + required: true + +jobs: + publish-winget: + name: Publish + runs-on: windows-latest + if: github.event_name == 'workflow_dispatch' || github.event_name == 'release' && !github.event.release.prerelease + steps: + - name: Configure parameters + id: params + run: | + if ("${{ github.event_name }}" -eq "release") { + echo "assets_url=${{ github.event.release.assets_url }}" >> $env:GITHUB_OUTPUT + echo "version=${{ github.event.release.tag_name }}" >> $env:GITHUB_OUTPUT + } else { + $releaseUrl = "$env:GITHUB_API_URL/repos/clangd/clangd/releases/tags/${{ github.event.inputs.tag_name }}" + $assetsUrl = curl -sL $releaseUrl | ConvertFrom-Json | Select-Object -ExpandProperty assets_url + echo "assets_url=$assetsUrl" >> $env:GITHUB_OUTPUT + echo "version=${{ github.event.inputs.tag_name }}" >> $env:GITHUB_OUTPUT + } + + - name: Set up Komac + run: | + $releaseUrl = "$env:GITHUB_API_URL/repos/russellbanks/Komac/releases/latest" + $downloadUrl = curl -sL $releaseUrl | ConvertFrom-Json + | Select-Object -ExpandProperty assets + | Where-Object -Property name -like "komac-*-x86_64-pc-windows-msvc.exe" + | Select-Object -ExpandProperty browser_download_url + | Select-Object -First 1 + curl -sL $downloadUrl -o komac.exe + ./komac --version + + - name: Submit package + env: + GITHUB_TOKEN: ${{ secrets.WINGET_TOKEN }} + run: | + $releaseUrl = curl -sL ${{ steps.params.outputs.assets_url }} | ConvertFrom-Json + | Where-Object -Property name -like "clangd-windows-*.zip" + | Select-Object -ExpandProperty browser_download_url + $version = "${{ steps.params.outputs.version }}" + $installerPath = "winget-pkgs/manifests/l/LLVM/clangd/$version/LLVM.clangd.installer.yaml" + + ./komac sync-fork + ./komac update -v $version -u $releaseUrl --dry-run -o winget-pkgs LLVM.clangd + + (Get-Content $installerPath) -replace '^(\s*-\s+RelativeFilePath:\s+).*$', ('${1}' + "clang_$version/bin/clangd.exe") + | Set-Content $installerPath + + ./komac submit -y winget-pkgs From 47599f6911ce7324d7b8f4c9143873aa6c400fc9 Mon Sep 17 00:00:00 2001 From: Ruben Buniatyan Date: Wed, 16 Jul 2025 21:01:32 +0200 Subject: [PATCH 2/4] Fix typo in path --- .github/workflows/winget.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml index acfc46a..a81da79 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/winget.yml @@ -52,7 +52,7 @@ jobs: ./komac sync-fork ./komac update -v $version -u $releaseUrl --dry-run -o winget-pkgs LLVM.clangd - (Get-Content $installerPath) -replace '^(\s*-\s+RelativeFilePath:\s+).*$', ('${1}' + "clang_$version/bin/clangd.exe") + (Get-Content $installerPath) -replace '^(\s*-\s+RelativeFilePath:\s+).*$', ('${1}' + "clangd_$version/bin/clangd.exe") | Set-Content $installerPath ./komac submit -y winget-pkgs From 10f57e3989a6f8890b7eb760a430bd09d67e4501 Mon Sep 17 00:00:00 2001 From: Ruben Buniatyan Date: Wed, 16 Jul 2025 22:06:10 +0200 Subject: [PATCH 3/4] Remove redundant handling --- .github/workflows/winget.yml | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml index a81da79..f456d69 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/winget.yml @@ -46,13 +46,6 @@ jobs: $releaseUrl = curl -sL ${{ steps.params.outputs.assets_url }} | ConvertFrom-Json | Where-Object -Property name -like "clangd-windows-*.zip" | Select-Object -ExpandProperty browser_download_url - $version = "${{ steps.params.outputs.version }}" - $installerPath = "winget-pkgs/manifests/l/LLVM/clangd/$version/LLVM.clangd.installer.yaml" ./komac sync-fork - ./komac update -v $version -u $releaseUrl --dry-run -o winget-pkgs LLVM.clangd - - (Get-Content $installerPath) -replace '^(\s*-\s+RelativeFilePath:\s+).*$', ('${1}' + "clangd_$version/bin/clangd.exe") - | Set-Content $installerPath - - ./komac submit -y winget-pkgs + ./komac update -v ${{ steps.params.outputs.version }} -u $releaseUrl -s LLVM.clangd From 8ee8cbdeae3410324448c579ed8a956761672244 Mon Sep 17 00:00:00 2001 From: Ruben Buniatyan Date: Thu, 17 Jul 2025 01:07:37 +0200 Subject: [PATCH 4/4] Delay processing on release --- .github/workflows/winget.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/winget.yml b/.github/workflows/winget.yml index f456d69..52111a6 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/winget.yml @@ -19,11 +19,15 @@ jobs: id: params run: | if ("${{ github.event_name }}" -eq "release") { + # Sometimes assets aren't immediately available, so we wait a bit for the first run + ${{ github.run_attempt == 1 && 'Start-Sleep -Seconds 300' || '' }} + echo "assets_url=${{ github.event.release.assets_url }}" >> $env:GITHUB_OUTPUT echo "version=${{ github.event.release.tag_name }}" >> $env:GITHUB_OUTPUT } else { $releaseUrl = "$env:GITHUB_API_URL/repos/clangd/clangd/releases/tags/${{ github.event.inputs.tag_name }}" $assetsUrl = curl -sL $releaseUrl | ConvertFrom-Json | Select-Object -ExpandProperty assets_url + echo "assets_url=$assetsUrl" >> $env:GITHUB_OUTPUT echo "version=${{ github.event.inputs.tag_name }}" >> $env:GITHUB_OUTPUT }