Skip to content

fix(linux): make the Confirm Before Deleting Rows switch take effect #2167

fix(linux): make the Confirm Before Deleting Rows switch take effect

fix(linux): make the Confirm Before Deleting Rows switch take effect #2167

Workflow file for this run

name: Repo Hygiene
# Checks that need no Mac: workflows, shell, release tooling and repo invariants. Ubuntu minutes are
# free on a public repo, so it runs on every pull request and needs no change filter.
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
concurrency:
group: repo-hygiene-${{ github.event_name == 'pull_request' && github.ref || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
permissions:
contents: read
jobs:
hygiene:
name: Repo Hygiene
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- name: Install shellcheck, PyYAML and actionlint
run: |
sudo apt-get update -qq
sudo apt-get install -y -qq shellcheck python3-yaml
bash <(curl -sSL https://raw.githubusercontent.com/rhysd/actionlint/v1.7.12/scripts/download-actionlint.bash) 1.7.12
# actionlint runs shellcheck over every inline run: block, which nothing else sees.
- name: Lint workflows
run: ./actionlint -color
- name: Lint scripts
run: |
set -euo pipefail
mapfile -t SCRIPTS < <(find scripts .claude/skills -name '*.sh' | sort)
shellcheck --severity=warning "${SCRIPTS[@]}"
# update-registry's tests are plain functions, which unittest discovery would skip.
- name: Test the CI and release tooling
run: |
set -euo pipefail
python3 -m unittest discover -s scripts/ci -p 'test_*.py'
python3 -m unittest discover -s scripts -p 'test_localization.py'
python3 .github/scripts/test_update_registry.py
bash scripts/ci/test_create_dmg_args.sh
bash scripts/ci/test_draft_release.sh
# shellcheck cannot tell a library function from a command, so a missing source is exit 127
# at release time (v0.67.1).
- name: Check every script sources the libraries it calls into
run: python3 scripts/ci/check-lib-sourcing.py
- name: Check the plugin manifest against the plugin classes
run: python3 scripts/ci/check-plugin-manifest.py
- name: Check no build script hardcodes the deployment target
run: bash scripts/ci/check-deployment-target.sh
# iOS alone defaults to MainActor isolation, so a shared plugin file must state its own.
- name: Check shared plugin sources are explicitly isolated for iOS
run: python3 scripts/ci/check-ios-shared-isolation.py
# A plugin's or package's String(localized:) resolves against the host app's bundle, so its
# strings live in each app's catalog by hand.
- name: Check plugin and package strings reach the string catalogs
run: |
set -euo pipefail
python3 scripts/localization.py plugins
python3 scripts/localization.py plugins --target ios
# xcstringstool accepts a %lld retyped as %@ or a dropped argument, and String(format:) then
# formats the wrong value at run time.
- name: Check the string catalogs
run: python3 scripts/ci/check-string-catalogs.py
- name: Check the license inventory against what the build ships
run: python3 scripts/ci/check-license-inventory.py
- name: Check both apps pin the Production CloudKit environment
run: python3 scripts/ci/check-entitlements.py
- name: Check every test target is in its test plan
run: python3 scripts/ci/check-test-plans.py
- name: Check currentPluginKitVersion moved at most once since the last release
run: python3 scripts/ci/check-pluginkit-bump-cadence.py --remote origin
- name: Check the Sparkle version agrees everywhere
run: python3 scripts/ci/check-sparkle-version.py
- name: Check the shared-contract drift gates
run: scripts/audit-refactor-health.sh --check
- name: Check no hub grew past its recorded size
run: python3 scripts/ci/check-hub-ratchet.py
- name: Decide whether the SAP HANA helper changed
id: native
env:
BASE: ${{ github.event.pull_request.base.sha || github.event.before }}
run: |
set -euo pipefail
hana=$(scripts/ci/detect-changed-paths.sh --base "$BASE" hana)
echo "hana=$hana" >> "$GITHUB_OUTPUT"
- name: Set up Go
if: steps.native.outputs.hana == 'true'
uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0
with:
go-version-file: Native/HanaBridge/go.mod
cache: false
# The helper is pure Go, so Linux analyses it as well as the Mac that builds it. govulncheck
# runs in build-plugin.yml, before a HANA plugin ships.
- name: Check the SAP HANA helper
if: steps.native.outputs.hana == 'true'
working-directory: Native/HanaBridge
run: |
set -euo pipefail
unformatted="$(gofmt -l .)"
if [ -n "$unformatted" ]; then
echo "::error::gofmt would rewrite: $unformatted"
exit 1
fi
go mod verify
go mod tidy -diff
GOOS=darwin go vet ./...
# go tool would build staticcheck for GOOS too, and Linux cannot run a darwin binary.
go build -modfile=tools.mod -o "$RUNNER_TEMP/staticcheck" honnef.co/go/tools/cmd/staticcheck
GOOS=darwin "$RUNNER_TEMP/staticcheck" ./...