Skip to content

Commit d06db5c

Browse files
committed
fixup! tools: aggregate Nix changes in a table
1 parent f99b257 commit d06db5c

1 file changed

Lines changed: 21 additions & 12 deletions

File tree

‎.github/workflows/nix-changes-comment.yml‎

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -69,20 +69,21 @@ jobs:
6969
}
7070
echo "| ${QUOTE}${PLATFORM}${QUOTE} | $BEFORE -> $AFTER => $DIFF | $CHANGED / $AFTER = $PERCENT% |"
7171
for STATE in before after; do
72-
# Split store paths into package name and version; non-default outputs are appended to the name (e.g. `brotli.lib`).
72+
# Split store paths into package name, output (or source archive extension), and version.
7373
awk -v OFS='\t' -v PLATFORM="$PLATFORM" '{
7474
name = substr($0, 45)
7575
pname = name
76+
output = "out"
7677
version = "_unversioned_"
7778
if (match(name, /-[^A-Za-z]/)) {
7879
pname = substr(name, 1, RSTART - 1)
7980
version = substr(name, RSTART + 1)
80-
if (match(version, /-[a-z]+$/)) {
81-
pname = pname "." substr(version, RSTART + 1)
81+
if (match(version, /-[a-z]+$/) || match(version, /\.(tar(\.[a-z0-9]+)?|tgz|tbz2?|txz|zip|patch|diff)$/)) {
82+
output = substr(version, RSTART + 1)
8283
version = substr(version, 1, RSTART - 1)
8384
}
8485
}
85-
print pname, version, PLATFORM, $0
86+
print pname, output, version, PLATFORM, $0
8687
}' "requisites-${PLATFORM}-${STATE}.list" >> "requisites-${STATE}.list"
8788
done
8889
done
@@ -118,10 +119,10 @@ jobs:
118119
gsub(/ /, post ", " pre, s)
119120
return s
120121
}
121-
/^[-+]/ && NF == 4 {
122-
key = substr($1, 2) SUBSEP $3
123-
if (substr($1, 1, 1) == "-") removed[key] = insert(removed[key], $2)
124-
else added[key] = insert(added[key], $2)
122+
/^[-+]/ && NF == 5 {
123+
key = substr($1, 2) SUBSEP $2 SUBSEP $4
124+
if (substr($1, 1, 1) == "-") removed[key] = insert(removed[key], $3)
125+
else added[key] = insert(added[key], $3)
125126
}
126127
END {
127128
for (key in removed) if (!(key in added)) added[key] = ""
@@ -133,12 +134,20 @@ jobs:
133134
else if (r == "") change = "_added_: " join(a, "**", "**")
134135
else if (a == "") change = "_removed_: " join(r)
135136
else change = join(r) " -> " join(a, "**", "**")
136-
group[k[1] SUBSEP change] = insert(group[k[1] SUBSEP change], k[2])
137+
platforms[k[1] SUBSEP k[2] SUBSEP change] = insert(platforms[k[1] SUBSEP k[2] SUBSEP change], k[3])
137138
}
138-
for (g in group) {
139-
split(g, k, SUBSEP)
139+
for (key in platforms) {
140+
split(key, k, SUBSEP)
141+
row = k[1] SUBSEP k[3] SUBSEP join(platforms[key])
142+
outputs[row] = insert(outputs[row], k[2])
143+
}
144+
for (row in outputs) {
145+
split(row, k, SUBSEP)
146+
n = split(outputs[row], o, " ")
147+
name = ""
148+
for (i = 1; i <= n; i++) name = name ", `" k[1] (o[i] == "out" ? "" : "." o[i]) "`"
140149
rank = k[2] ~ /^_added_/ ? 0 : k[2] ~ /^_removed_/ ? 2 : k[2] ~ /^_no version change_/ ? 3 : 1
141-
print rank "\t| `" k[1] "` | " k[2] " | " join(group[g]) " |"
150+
print rank "\t| " substr(name, 3) " | " k[2] " | " k[3] " |"
142151
}
143152
}
144153
' requisites.diff > versions.tsv

0 commit comments

Comments
 (0)