build(release): several apps released in one run (train:minor learn), their version commits pushed without the checks
All checks were successful
CI / check (push) Successful in 41m7s
CI / deploy (push) Successful in 1m2s

The release tool and tool/with_signing_keys.sh take several apps, each with its version
after a colon or none, and release them one after another, each as alone, stopping at
the first that fails; the key script fetches every named app's key.

The pre-push hook skips tool/check.dart when a push brings release commits alone: the
release tool's chore(release) subject, an app's pubspec changed in its version line and
its texts of what's new, nothing else (tool/release_push.dart). Signatures are checked as
before, and CI still runs the checks. A release no longer costs a run of the checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-03 12:11:30 +01:00
commit f06fc23023
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -64,13 +64,29 @@ void main() {
test("fdroid runs the F-Droid repository's script alone, with the "
"index's key and its password only", () {
expect(script, contains(' fdroid) ;;'));
expect(script, contains(r'tool/fdroid_repo.sh "$@" || status=$?'));
final alone = script.substring(
script.indexOf(r'if [ "$app" = fdroid ]; then'),
script.indexOf(r'if [ "$1" = fdroid ]; then'),
script.indexOf(r'tool/fdroid_repo.sh "$@"'),
);
expect(alone, isNot(contains('app_item')));
expect(alone, isNot(contains('forgejo_token')));
});
test('several apps named, each gets its own key, under its own name and '
'variable, and the release tool every argument as given', () {
expect(script, contains(r'*) apps+=("${word%%:*}") ;;'));
expect(script, contains('-* | major | minor | patch) ;;'));
expect(
script,
contains(
r'fetch "$app_item" android-release.p12 "$keys/$app-android-release.p12"',
),
);
expect(
script,
contains(r'export "$app_variable=$keys/$app-android-release.p12"'),
);
expect(script, contains(r'dart run tool/release.dart "$@" || status=$?'));
});
}