mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-17 04:55:42 +09:00
chore(workspace): tighten quality gates (#2230)
This commit is contained in:
1 parent
e6e4c6f7b5
commit
5c2dca1c51
123 files changed
+4925
-5640
No files matched your search
Executable
+253
@@ -0,0 +1,253 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
repo_root="$(cd "$script_dir/../.." && pwd)"
|
||||
native_root="$repo_root/fluxer_desktop/native"
|
||||
cargo_bin="${CARGO_BIN:-cargo}"
|
||||
cargo_deny_bin="${CARGO_DENY_BIN:-cargo-deny}"
|
||||
native_target_dir="${DESKTOP_NATIVE_CARGO_TARGET_DIR:-$repo_root/target/desktop-native-workspaces}"
|
||||
mode="${1:-}"
|
||||
|
||||
linux_workspaces=(
|
||||
"audio-apm/Cargo.toml"
|
||||
"audio-mix/Cargo.toml"
|
||||
"audio-timing/Cargo.toml"
|
||||
"encoder-ring/Cargo.toml"
|
||||
"gpu-rebuild/Cargo.toml"
|
||||
"hardware-encoder/Cargo.toml"
|
||||
"linux-audio-capture/Cargo.toml"
|
||||
"linux-evdev/Cargo.toml"
|
||||
"linux-input-hook/Cargo.toml"
|
||||
"linux-notifications/Cargo.toml"
|
||||
"linux-portals/Cargo.toml"
|
||||
"linux-screen-capture/Cargo.toml"
|
||||
"platform-info/Cargo.toml"
|
||||
"rt-thread/Cargo.toml"
|
||||
"rust/Cargo.toml"
|
||||
"screen-frame-bus/Cargo.toml"
|
||||
"system-hunspell/Cargo.toml"
|
||||
"webauthn/Cargo.toml"
|
||||
)
|
||||
|
||||
fuzz_workspaces=(
|
||||
"rust/fuzz/Cargo.toml"
|
||||
)
|
||||
|
||||
macos_workspaces=(
|
||||
"mac-app-audio/Cargo.toml"
|
||||
"mac-clipboard/Cargo.toml"
|
||||
"mac-screen-capture/Cargo.toml"
|
||||
"mac-sysctl/Cargo.toml"
|
||||
"mac-tcc/Cargo.toml"
|
||||
"macos-input-hook/Cargo.toml"
|
||||
)
|
||||
|
||||
windows_workspaces=(
|
||||
"win-clipboard/Cargo.toml"
|
||||
"win-game-capture/Cargo.toml"
|
||||
"win-process-loopback/Cargo.toml"
|
||||
"win-shell/Cargo.toml"
|
||||
"win-toast/Cargo.toml"
|
||||
"windows-input-hook/Cargo.toml"
|
||||
)
|
||||
|
||||
fail() {
|
||||
printf '%s\n' "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
if [ "$#" -ne 1 ]; then
|
||||
fail "Usage: $0 dependencies|fmt|clippy|test"
|
||||
fi
|
||||
|
||||
case "$mode" in
|
||||
dependencies | fmt | clippy | test) ;;
|
||||
*) fail "Unknown desktop native workspace check: $mode" ;;
|
||||
esac
|
||||
|
||||
manifest_list="$(mktemp)"
|
||||
discovered_inventory="$(mktemp)"
|
||||
expected_inventory="$(mktemp)"
|
||||
|
||||
cleanup() {
|
||||
rm -f "$manifest_list" "$discovered_inventory" "$expected_inventory"
|
||||
}
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
workspace_category() {
|
||||
local relative_manifest="$1"
|
||||
local classified_manifest
|
||||
|
||||
for classified_manifest in "${linux_workspaces[@]}"; do
|
||||
if [ "$relative_manifest" = "$classified_manifest" ]; then
|
||||
printf 'linux\n'
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
for classified_manifest in "${fuzz_workspaces[@]}"; do
|
||||
if [ "$relative_manifest" = "$classified_manifest" ]; then
|
||||
printf 'fuzz\n'
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
for classified_manifest in "${macos_workspaces[@]}"; do
|
||||
if [ "$relative_manifest" = "$classified_manifest" ]; then
|
||||
printf 'macos\n'
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
for classified_manifest in "${windows_workspaces[@]}"; do
|
||||
if [ "$relative_manifest" = "$classified_manifest" ]; then
|
||||
printf 'windows\n'
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
printf 'unknown\n'
|
||||
}
|
||||
|
||||
run_dependencies() {
|
||||
local manifest="$1"
|
||||
|
||||
"$cargo_deny_bin" \
|
||||
--manifest-path "$manifest" \
|
||||
--all-features \
|
||||
--locked \
|
||||
check \
|
||||
-D warnings \
|
||||
-A unmatched-skip \
|
||||
-A unnecessary-skip \
|
||||
-D duplicate
|
||||
}
|
||||
|
||||
run_format() {
|
||||
local manifest="$1"
|
||||
|
||||
"$cargo_bin" fmt --manifest-path "$manifest" --all -- --check
|
||||
}
|
||||
|
||||
run_clippy() {
|
||||
local manifest="$1"
|
||||
|
||||
CARGO_TARGET_DIR="$native_target_dir" \
|
||||
"$cargo_bin" clippy \
|
||||
--manifest-path "$manifest" \
|
||||
--workspace \
|
||||
--all-targets \
|
||||
--all-features \
|
||||
--locked \
|
||||
-- \
|
||||
-D warnings
|
||||
}
|
||||
|
||||
run_tests() {
|
||||
local manifest="$1"
|
||||
|
||||
CI=true CARGO_TARGET_DIR="$native_target_dir" \
|
||||
"$cargo_bin" test \
|
||||
--manifest-path "$manifest" \
|
||||
--workspace \
|
||||
--all-features \
|
||||
--locked
|
||||
}
|
||||
|
||||
find "$native_root" -type d -name target -prune -o -type f -name Cargo.toml -print | LC_ALL=C sort >"$manifest_list"
|
||||
|
||||
if [ ! -s "$manifest_list" ]; then
|
||||
fail "No independent desktop native workspaces found"
|
||||
fi
|
||||
|
||||
linux_count=0
|
||||
fuzz_count=0
|
||||
macos_count=0
|
||||
windows_count=0
|
||||
|
||||
while IFS= read -r manifest; do
|
||||
if ! grep -Eq '^[[:space:]]*\[workspace\][[:space:]]*$' "$manifest"; then
|
||||
fail "Desktop native manifest is not an independent workspace: $manifest"
|
||||
fi
|
||||
|
||||
manifest_dir="${manifest%/Cargo.toml}"
|
||||
if [ ! -f "$manifest_dir/Cargo.lock" ]; then
|
||||
fail "Desktop native workspace has no adjacent Cargo.lock: $manifest"
|
||||
fi
|
||||
|
||||
relative_manifest="${manifest#"$native_root/"}"
|
||||
category="$(workspace_category "$relative_manifest")"
|
||||
case "$category" in
|
||||
linux) linux_count=$((linux_count + 1)) ;;
|
||||
fuzz) fuzz_count=$((fuzz_count + 1)) ;;
|
||||
macos) macos_count=$((macos_count + 1)) ;;
|
||||
windows) windows_count=$((windows_count + 1)) ;;
|
||||
*) fail "Unclassified desktop native workspace: $relative_manifest" ;;
|
||||
esac
|
||||
printf '%s\n' "$relative_manifest" >>"$discovered_inventory"
|
||||
done <"$manifest_list"
|
||||
|
||||
printf '%s\n' \
|
||||
"${linux_workspaces[@]}" \
|
||||
"${fuzz_workspaces[@]}" \
|
||||
"${macos_workspaces[@]}" \
|
||||
"${windows_workspaces[@]}" |
|
||||
LC_ALL=C sort >"$expected_inventory"
|
||||
|
||||
if ! diff -u "$expected_inventory" "$discovered_inventory"; then
|
||||
fail "Desktop native workspace inventory does not match discovery"
|
||||
fi
|
||||
|
||||
if [ "$mode" = clippy ] || [ "$mode" = test ]; then
|
||||
host_kernel="$(uname -s)"
|
||||
if [ "$host_kernel" != Linux ]; then
|
||||
fail "Desktop native $mode checks require a Linux host, found: $host_kernel"
|
||||
fi
|
||||
fi
|
||||
|
||||
checked_count=0
|
||||
|
||||
cd "$native_root"
|
||||
|
||||
while IFS= read -r manifest; do
|
||||
relative_manifest="${manifest#"$native_root/"}"
|
||||
category="$(workspace_category "$relative_manifest")"
|
||||
|
||||
case "$mode" in
|
||||
dependencies)
|
||||
printf 'Dependencies: %s\n' "$relative_manifest"
|
||||
run_dependencies "$manifest"
|
||||
;;
|
||||
fmt)
|
||||
printf 'Format: %s\n' "$relative_manifest"
|
||||
run_format "$manifest"
|
||||
;;
|
||||
clippy)
|
||||
case "$category" in
|
||||
linux) printf 'Clippy full Linux/shared coverage: %s\n' "$relative_manifest" ;;
|
||||
fuzz) printf 'Clippy fuzz-target coverage: %s\n' "$relative_manifest" ;;
|
||||
macos) printf 'Clippy Linux stub/common coverage; macOS backend not validated: %s\n' "$relative_manifest" ;;
|
||||
windows) printf 'Clippy Linux stub/common coverage; Windows backend not validated: %s\n' "$relative_manifest" ;;
|
||||
esac
|
||||
run_clippy "$manifest"
|
||||
;;
|
||||
test)
|
||||
case "$category" in
|
||||
linux) printf 'Test full Linux/shared coverage: %s\n' "$relative_manifest" ;;
|
||||
fuzz) printf 'Test command is a no-op for test=false fuzz binaries: %s\n' "$relative_manifest" ;;
|
||||
macos) printf 'Test Linux stub/common coverage; macOS backend not validated: %s\n' "$relative_manifest" ;;
|
||||
windows) printf 'Test Linux stub/common coverage; Windows backend not validated: %s\n' "$relative_manifest" ;;
|
||||
esac
|
||||
run_tests "$manifest"
|
||||
;;
|
||||
esac
|
||||
checked_count=$((checked_count + 1))
|
||||
done <"$manifest_list"
|
||||
|
||||
discovered_count=$((linux_count + fuzz_count + macos_count + windows_count))
|
||||
printf 'Desktop native workspace categories: discovered=%s linux-full=%s fuzz=%s macos-stub-common=%s windows-stub-common=%s\n' "$discovered_count" "$linux_count" "$fuzz_count" "$macos_count" "$windows_count"
|
||||
printf 'Desktop native %s summary: checked=%s\n' "$mode" "$checked_count"
|
||||
Reference in new issue
Block a user