Skip to content

Commit e0e669a

Browse files
committed
fix: Address critical code review issues
- Fix Chocolatey uninstall script to properly remove extracted files - Fix ARM64 checksum validation logic with regex pattern matching - Fix Homebrew ARM architecture detection to use arm64 specifically - Optimize GitHub Actions workflow to eliminate redundant downloads - Update upload-artifact action to v4 for compatibility - Remove non-existent iconUrl from Chocolatey package spec Addresses automated code review feedback for PR #47
1 parent 80e9a14 commit e0e669a

File tree

5 files changed

+18
-52
lines changed

5 files changed

+18
-52
lines changed

.github/workflows/release.yml

Lines changed: 13 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ on:
88
jobs:
99
build:
1010
runs-on: ubuntu-latest
11+
outputs:
12+
win_x64_sha256: ${{ steps.checksums.outputs.win_x64_sha256 }}
13+
win_arm64_sha256: ${{ steps.checksums.outputs.win_arm64_sha256 }}
14+
linux_x64_sha256: ${{ steps.checksums.outputs.linux_x64_sha256 }}
15+
linux_arm64_sha256: ${{ steps.checksums.outputs.linux_arm64_sha256 }}
16+
osx_x64_sha256: ${{ steps.checksums.outputs.osx_x64_sha256 }}
17+
osx_arm64_sha256: ${{ steps.checksums.outputs.osx_arm64_sha256 }}
1118
permissions:
1219
contents: write
1320

@@ -92,34 +99,13 @@ jobs:
9299
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
93100
}
94101
95-
- name: Get release assets and checksums
96-
id: release_info
97-
shell: pwsh
98-
run: |
99-
$version = "${{ github.ref }}" -replace 'refs/tags/v', ''
100-
$release = Invoke-RestMethod -Uri "https://api.github.com/repos/${{ github.repository }}/releases/tags/v$version"
101-
102-
# Get checksums from release assets or calculate them
103-
$winX64Asset = $release.assets | Where-Object { $_.name -eq "dotnet-api-diff-win-x64.zip" }
104-
$winArm64Asset = $release.assets | Where-Object { $_.name -eq "dotnet-api-diff-win-arm64.zip" }
105-
106-
# Download assets and calculate checksums
107-
Invoke-WebRequest -Uri $winX64Asset.browser_download_url -OutFile "win-x64.zip"
108-
Invoke-WebRequest -Uri $winArm64Asset.browser_download_url -OutFile "win-arm64.zip"
109-
110-
$checksumX64 = (Get-FileHash "win-x64.zip" -Algorithm SHA256).Hash.ToLower()
111-
$checksumArm64 = (Get-FileHash "win-arm64.zip" -Algorithm SHA256).Hash.ToLower()
112-
113-
echo "version=$version" >> $env:GITHUB_OUTPUT
114-
echo "checksum_x64=$checksumX64" >> $env:GITHUB_OUTPUT
115-
echo "checksum_arm64=$checksumArm64" >> $env:GITHUB_OUTPUT
116-
117102
- name: Build and publish Chocolatey package
118103
shell: pwsh
119104
env:
120105
CHOCOLATEY_API_KEY: ${{ secrets.CHOCOLATEY_API_KEY }}
121106
run: |
122-
.\scripts\build-chocolatey.ps1 -Version "${{ steps.release_info.outputs.version }}" -ChecksumX64 "${{ steps.release_info.outputs.checksum_x64 }}" -ChecksumArm64 "${{ steps.release_info.outputs.checksum_arm64 }}" -ApiKey "$env:CHOCOLATEY_API_KEY" -Publish
107+
$version = "${{ github.ref }}" -replace 'refs/tags/v', ''
108+
.\scripts\build-chocolatey.ps1 -Version "$version" -ChecksumX64 "${{ needs.build.outputs.win_x64_sha256 }}" -ChecksumArm64 "${{ needs.build.outputs.win_arm64_sha256 }}" -ApiKey "$env:CHOCOLATEY_API_KEY" -Publish
123109
124110
homebrew:
125111
needs: build
@@ -129,37 +115,18 @@ jobs:
129115
steps:
130116
- uses: actions/checkout@v4
131117

132-
- name: Get release assets and checksums
118+
- name: Get release version
133119
id: release_info
134120
run: |
135121
VERSION=${GITHUB_REF#refs/tags/v}
136-
137-
# Get release information
138-
RELEASE_JSON=$(curl -s "https://api.github.com/repos/${{ github.repository }}/releases/tags/v$VERSION")
139-
140-
# Download assets and calculate checksums
141-
wget -q $(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name=="dotnet-api-diff-osx-arm64.tar.gz") | .browser_download_url') -O osx-arm64.tar.gz
142-
wget -q $(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name=="dotnet-api-diff-osx-x64.tar.gz") | .browser_download_url') -O osx-x64.tar.gz
143-
wget -q $(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name=="dotnet-api-diff-linux-arm64.tar.gz") | .browser_download_url') -O linux-arm64.tar.gz
144-
wget -q $(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name=="dotnet-api-diff-linux-x64.tar.gz") | .browser_download_url') -O linux-x64.tar.gz
145-
146-
OSX_ARM64_SHA256=$(sha256sum osx-arm64.tar.gz | cut -d' ' -f1)
147-
OSX_X64_SHA256=$(sha256sum osx-x64.tar.gz | cut -d' ' -f1)
148-
LINUX_ARM64_SHA256=$(sha256sum linux-arm64.tar.gz | cut -d' ' -f1)
149-
LINUX_X64_SHA256=$(sha256sum linux-x64.tar.gz | cut -d' ' -f1)
150-
151-
echo "version=$VERSION" >> $GITHUB_OUTPUT
152-
echo "osx_arm64_sha256=$OSX_ARM64_SHA256" >> $GITHUB_OUTPUT
153-
echo "osx_x64_sha256=$OSX_X64_SHA256" >> $GITHUB_OUTPUT
154-
echo "linux_arm64_sha256=$LINUX_ARM64_SHA256" >> $GITHUB_OUTPUT
155-
echo "linux_x64_sha256=$LINUX_X64_SHA256" >> $GITHUB_OUTPUT
122+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
156123
157124
- name: Update Homebrew formula
158125
run: |
159-
./scripts/update-homebrew.sh "${{ steps.release_info.outputs.version }}" "${{ steps.release_info.outputs.osx_arm64_sha256 }}" "${{ steps.release_info.outputs.osx_x64_sha256 }}" "${{ steps.release_info.outputs.linux_arm64_sha256 }}" "${{ steps.release_info.outputs.linux_x64_sha256 }}"
126+
./scripts/update-homebrew.sh "${{ steps.release_info.outputs.version }}" "${{ needs.build.outputs.osx_arm64_sha256 }}" "${{ needs.build.outputs.osx_x64_sha256 }}" "${{ needs.build.outputs.linux_arm64_sha256 }}" "${{ needs.build.outputs.linux_x64_sha256 }}"
160127
161128
- name: Upload Homebrew formula as artifact
162-
uses: actions/upload-artifact@v3
129+
uses: actions/upload-artifact@v4
163130
with:
164131
name: homebrew-formula
165132
path: artifacts/dotnetapidiff.rb

packaging/chocolatey/dotnetapidiff.nuspec

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
<title>DotNet API Diff</title>
99
<authors>Josh Brinkman</authors>
1010
<projectUrl>https://github.com/jbrinkman/dotnet-api-diff</projectUrl>
11-
<iconUrl>https://raw.githubusercontent.com/jbrinkman/dotnet-api-diff/main/icon.png</iconUrl>
1211
<copyright>2025 Josh Brinkman</copyright>
1312
<licenseUrl>https://github.com/jbrinkman/dotnet-api-diff/blob/main/LICENSE</licenseUrl>
1413
<requireLicenseAcceptance>false</requireLicenseAcceptance>

packaging/chocolatey/tools/chocolateyinstall.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ $packageArgs = @{
2424
# Check if we're on ARM64 and the ARM64 version is available
2525
$isArm64 = $env:PROCESSOR_ARCHITECTURE -eq 'ARM64' -or $env:PROCESSOR_ARCHITEW6432 -eq 'ARM64'
2626

27-
if ($isArm64 -and $urlArm64 -and $checksumArm64 -ne '$checksumArm64$') {
27+
if ($isArm64 -and $urlArm64 -and $checksumArm64 -match '^[a-fA-F0-9]{64}$') {
2828
Write-Host "Detected ARM64 architecture, using ARM64 build"
2929
$packageArgs.url64bit = $urlArm64
3030
$packageArgs.checksum64 = $checksumArm64

packaging/chocolatey/tools/chocolateyuninstall.ps1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ $ErrorActionPreference = 'Stop';
22

33
$packageName = 'dotnetapidiff'
44

5-
# Remove the shim
6-
Uninstall-ChocolateyZipPackage $packageName -zipFileName "*.zip"
5+
# Remove extracted files
6+
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
7+
Get-ChildItem -Path $toolsDir -Include *.exe,*.dll,*.json,*.xml,*.pdb -File | ForEach-Object { Remove-Item $_.FullName -Force }
78

89
# Clean up batch file if it exists
9-
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
1010
$batchPath = Join-Path $toolsDir "dotnetapidiff.bat"
1111
if (Test-Path $batchPath) {
1212
Remove-Item $batchPath -Force

packaging/homebrew/dotnetapidiff.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Dotnetapidiff < Formula
1010
elsif OS.mac? && Hardware::CPU.intel?
1111
url "https://github.com/jbrinkman/dotnet-api-diff/releases/download/v$version$/dotnet-api-diff-osx-x64.tar.gz"
1212
sha256 "$sha256_osx_x64$"
13-
elsif OS.linux? && Hardware::CPU.arm?
13+
elsif OS.linux? && Hardware::CPU.arm64?
1414
url "https://github.com/jbrinkman/dotnet-api-diff/releases/download/v$version$/dotnet-api-diff-linux-arm64.tar.gz"
1515
sha256 "$sha256_linux_arm64$"
1616
elsif OS.linux? && Hardware::CPU.intel?

0 commit comments

Comments
 (0)