Skip to content

Commit 3241b40

Browse files
authored
Sort release assets (#80)
* Sort release assets * Move winget/create-manifest.ps1 to service/create-winget-manifest.ps1
1 parent ce1ec15 commit 3241b40

File tree

5 files changed

+111
-7
lines changed

5 files changed

+111
-7
lines changed

.github/workflows/build.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1009,23 +1009,34 @@ jobs:
10091009
if: needs.versions.outputs.release-tag
10101010
runs-on: ubuntu-latest
10111011
steps:
1012+
-
1013+
name: Checkout
1014+
uses: actions/checkout@v6
10121015
-
10131016
name: Create assets directory
1014-
run: mkdir -p assets
1017+
run: mkdir release-assets
10151018
-
10161019
name: Download assets
10171020
uses: actions/download-artifact@v7
10181021
with:
1019-
path: assets
1022+
path: release-assets
10201023
pattern: assets-*
10211024
merge-multiple: true
1025+
-
1026+
name: Build assets list
1027+
id: build-assets-list
1028+
run: |
1029+
printf 'assets<<EOF\n' >>"$GITHUB_OUTPUT"
1030+
./service/list-assets.sh release-assets >>"$GITHUB_OUTPUT"
1031+
printf 'EOF\n' >>"$GITHUB_OUTPUT"
1032+
cat "$GITHUB_OUTPUT"
10221033
-
10231034
name: Publish release
10241035
uses: softprops/action-gh-release@v2
10251036
with:
10261037
name: ${{ needs.versions.outputs.release-tag }}
10271038
tag_name: ${{ needs.versions.outputs.release-tag }}
1028-
files: assets/*
1039+
files: ${{ steps.build-assets-list.outputs.assets }}
10291040
fail_on_unmatched_files: true
10301041
prerelease: ${{ needs.versions.outputs.is-prerelease == 'yes' && 'true' || 'false' }}
10311042
make_latest: ${{ needs.versions.outputs.is-prerelease == 'yes' && 'false' || 'true' }}

.github/workflows/virustotal.yml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,18 @@ jobs:
3232
fi
3333
printf 'Using tag: %s\n' "$TAG_NAME"
3434
echo "tag-name=$TAG_NAME" >>"$GITHUB_OUTPUT"
35+
-
36+
name: Checkout
37+
if: env.HAS_VT_API_KEY == 'true'
38+
uses: actions/checkout@v6
39+
-
40+
name: Create assets directory
41+
if: env.HAS_VT_API_KEY == 'true'
42+
run: mkdir release-assets
3543
-
3644
name: Download release assets
3745
if: env.HAS_VT_API_KEY == 'true'
46+
working-directory: release-assets
3847
env:
3948
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4049
run: |
@@ -44,6 +53,15 @@ jobs:
4453
done
4554
echo 'Assets downloaded:'
4655
ls -l
56+
-
57+
name: Build assets list
58+
if: env.HAS_VT_API_KEY == 'true'
59+
id: build-assets-list
60+
run: |
61+
printf 'assets<<EOF\n' >>"$GITHUB_OUTPUT"
62+
./service/list-assets.sh release-assets >>"$GITHUB_OUTPUT"
63+
printf 'EOF\n' >>"$GITHUB_OUTPUT"
64+
cat "$GITHUB_OUTPUT"
4765
-
4866
name: Submit to VirusTotal
4967
if: env.HAS_VT_API_KEY == 'true'
@@ -53,9 +71,7 @@ jobs:
5371
vt_api_key: ${{ secrets.VIRUSTOTAL_API_KEY }}
5472
update_release_body: false
5573
request_rate: 4
56-
files: |
57-
*.exe
58-
*.zip
74+
files: ${{ steps.build-assets-list.outputs.assets }}
5975
-
6076
name: Update release body with VirusTotal report
6177
if: steps.submit.outputs.analysis

.github/workflows/winget.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ jobs:
106106
run: |
107107
Import-Module -Name .\tmp\powershell-yaml\ -Force
108108
$releaseData = Get-Content -LiteralPath tmp/release.json | ConvertFrom-Json
109-
$manifestPath, $packageVersion, $versionOperation = ./winget/create-manifest.ps1 ` -PackageIdentifier $env:WINGETPKGS_ID -ReleaseData $releaseData -ManifestsPath tmp/winget-pkgs/manifests
109+
$manifestPath, $packageVersion, $versionOperation = ./service/create-winget-manifest.ps1 ` -PackageIdentifier $env:WINGETPKGS_ID -ReleaseData $releaseData -ManifestsPath tmp/winget-pkgs/manifests
110110
Write-Host "Manifest created at: $manifestPath"
111111
Get-ChildItem -LiteralPath $manifestPath -Recurse -File | ForEach-Object {
112112
Write-Host "::group::$($_.Name)"

service/list-assets.sh

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/bin/bash
2+
#
3+
# Script that builds a sorted list of assets
4+
#
5+
# Arguments:
6+
# $1: Path to the directory containing the assets
7+
8+
set -o errexit
9+
set -o nounset
10+
set -o pipefail
11+
12+
if [ "$#" -ne 1 ] || [ -z "$1" ]; then
13+
echo 'Please provide the path to the directory containing the assets as the first and only argument.'
14+
exit 1
15+
fi
16+
dir="$1"
17+
if [ ! -d "$dir" ]; then
18+
printf "The provided path '%s' is not a directory.\n" "$dir"
19+
exit 1
20+
fi
21+
22+
find "$dir" -type f -print0 | while IFS= read -r -d '' f; do
23+
case "$f" in
24+
*shared-32.exe)
25+
p=01
26+
;;
27+
*shared-32.zip)
28+
p=02
29+
;;
30+
*shared-64.exe)
31+
p=03
32+
;;
33+
*shared-64.zip)
34+
p=04
35+
;;
36+
*static-32.exe)
37+
p=05
38+
;;
39+
*static-32.zip)
40+
p=06
41+
;;
42+
*static-64.exe)
43+
p=07
44+
;;
45+
*static-64.zip)
46+
p=08
47+
;;
48+
*shared-32-dev-gcc.zip)
49+
p=09
50+
;;
51+
*shared-32-dev-msvc.zip)
52+
p=10
53+
;;
54+
*shared-64-dev-gcc.zip)
55+
p=11
56+
;;
57+
*shared-64-dev-msvc.zip)
58+
p=12
59+
;;
60+
*static-32-dev-gcc.zip)
61+
p=13
62+
;;
63+
*static-32-dev-msvc.zip)
64+
p=14
65+
;;
66+
*static-64-dev-gcc.zip)
67+
p=15
68+
;;
69+
*static-64-dev-msvc.zip)
70+
p=16
71+
;;
72+
*)
73+
p=99
74+
;;
75+
esac
76+
printf "%s\t%s\n" "$p" "$(realpath -- "$f")"
77+
done | sort -k1,1n -k2 | cut -f2

0 commit comments

Comments
 (0)