Files
plezy/scripts/ci_guard_checks.sh
T
edde746 944a8d89f5 feat(windows): package for the Microsoft Store as an MSIX bundle
The Store's unpackaged EXE path would require Authenticode-signing the
installer and every PE file inside it. MSIX submissions are re-signed by the
Store instead, so this route needs no code-signing certificate. build-msix.ps1
mirrors build-installer.ps1 and consumes the same per-architecture build
artifacts, leaving the installer, portable archives and WinSparkle appcast
untouched.

One template generates the manifest for both architectures, carrying the
identity reserved in Partner Center. check_windows_msix.py recomputes the
package family name from the publisher DN, so a mistyped identity fails CI
rather than a submission, and it parses the script rather than running it
because root CI is Linux. Qualified logo assets are indexed into
resources.pri; without the altform-unplated variants the shell draws the
taskbar icon on an accent-coloured plate.

PlatformDetector.isPackagedInstall gates the in-app updater and the Liberapay
tile, which the read-only package directory and Store commerce policy
respectively rule out. Gating at runtime keeps one Windows build feeding both
the installer and the Store package.
2026-07-30 20:03:04 +02:00

35 lines
1.2 KiB
Bash

#!/usr/bin/env bash
# Workflow and script regression guards.
#
# Single source of truth for the guard roster, shared by the "Verify workflow
# and script guards" step in .github/workflows/ci.yml and section 4 of
# scripts/ci_checks.sh. The checkers are named explicitly because a few of them
# belong to other jobs (check_bun_audit.py needs Bun, check_codegen.py runs via
# codegen.sh), but their regression tests are discovered by glob so a newly
# added scripts/test_*.py is picked up automatically instead of having to be
# remembered in two places.
set -euo pipefail
shopt -s nullglob
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"
for checker in \
scripts/check_build_workflow.py \
scripts/check_apple_spm_locks.py \
scripts/check_tvos_test_wiring.py \
scripts/check_shrinker_rules.py \
scripts/verify_runtime_inputs.py \
scripts/check_workflow_security.py \
scripts/check_workflow_action_pins.py \
scripts/check_container_image_pins.py \
scripts/check_update_packages_workflow.py \
scripts/check_windows_installer.py \
scripts/check_windows_msix.py; do
python3 "$checker"
done
for guard_test in scripts/test_*.py; do
python3 "$guard_test"
done