1def truncate(xs; n):
2 if xs | length > n then xs[:n] + ["..."]
3 else xs
4 end;
5
6def itemize_packages(xs):
7 truncate(xs; 2000) |
8 map("- [\(.)](https://search.nixos.org/packages?channel=unstable&show=\(.)&from=0&size=50&sort=relevance&type=packages&query=\(.))") |
9 join("\n");
10
11def get_title(s; xs):
12 s + " (" + (xs | length | tostring) + ")";
13
14def section(title; xs):
15 "<details> <summary>" + get_title(title; xs) + "</summary>\n\n" + itemize_packages(xs) + "</details>";
16
17def fallback_document(content; n):
18 if content | utf8bytelength > n then
19 get_title("Added packages"; .attrdiff.added) + "\n\n" +
20 get_title("Removed packages"; .attrdiff.removed) + "\n\n" +
21 get_title("Changed packages"; .attrdiff.changed)
22 else content
23 end;
24
25# we truncate the list to stay below the GitHub limit of 1MB per step summary.
26fallback_document(
27 section("Added packages"; .attrdiff.added) + "\n\n" +
28 section("Removed packages"; .attrdiff.removed) + "\n\n" +
29 section("Changed packages"; .attrdiff.changed); 1000 * 1000
30)