Selkie.git | tools/ | check-release-hygiene.raku
#!/usr/bin/env raku
use v6.d;
# Fails when package-root artifacts that should never be present during a
# release validation are found. These files are ignored by git, so `git status`
# alone will not catch them.
my @bad;
for <.precomp lib/.precomp NUL> -> $path {
@bad.push($path) if $path.IO.e;
}
for '.'.IO.dir -> $entry {
my $name = $entry.basename;
next unless $name.starts-with('Selkie-');
if $entry.d || $name.ends-with('.tar.gz') {
@bad.push($name);
}
}
if @bad {
note "Release hygiene failed: remove ignored package artifacts before release validation:";
note " - $_" for @bad.sort;
exit 1;
}
say "Release hygiene OK";