mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-06-11 16:57:43 +00:00
44 lines
1.6 KiB
Bash
44 lines
1.6 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# SPDX-FileCopyrightText: 2026 Marco Allegretti
|
||
|
|
# SPDX-License-Identifier: EUPL-1.2
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||
|
|
cd "$repo_dir"
|
||
|
|
|
||
|
|
fail() {
|
||
|
|
printf '%s\n' "$1" >&2
|
||
|
|
exit 1
|
||
|
|
}
|
||
|
|
|
||
|
|
[[ -f tools/preview-stubs/CMakeLists.txt ]] || fail "preview QML stubs must have tracked CMake integration"
|
||
|
|
grep -Fq 'set(SHIFT_INSTALL_PREVIEW_QML_STUBS "AUTO"' tools/preview-stubs/CMakeLists.txt \
|
||
|
|
|| fail "preview QML stubs must default to AUTO, not unconditional installation"
|
||
|
|
grep -Fq 'PROPERTY STRINGS AUTO ON OFF' tools/preview-stubs/CMakeLists.txt \
|
||
|
|
|| fail "preview QML stubs must provide an explicit OFF mode"
|
||
|
|
grep -Fq 'CMAKE_INSTALL_PREFIX MATCHES "/\\.prefix$"' tools/preview-stubs/CMakeLists.txt \
|
||
|
|
|| fail "preview QML stubs must be limited to local .prefix installs by default"
|
||
|
|
grep -Eq 'DESTINATION \$\{KDE_INSTALL_QMLDIR\}' tools/preview-stubs/CMakeLists.txt \
|
||
|
|
|| fail "preview QML stubs must install into the Qt QML import tree"
|
||
|
|
|
||
|
|
while IFS= read -r -d '' qmldir; do
|
||
|
|
module_dir="$(dirname "$qmldir")"
|
||
|
|
while IFS= read -r line; do
|
||
|
|
line="${line%%#*}"
|
||
|
|
[[ -n "${line//[[:space:]]/}" ]] || continue
|
||
|
|
|
||
|
|
case "$line" in
|
||
|
|
module\ *|plugin\ *|classname\ *|typeinfo\ *|depends\ *|prefer\ *)
|
||
|
|
continue
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
set -- $line
|
||
|
|
qml_file="${3:-}"
|
||
|
|
[[ -n "$qml_file" ]] || continue
|
||
|
|
[[ -f "$module_dir/$qml_file" ]] || fail "$qmldir declares missing file: $qml_file"
|
||
|
|
done < "$qmldir"
|
||
|
|
done < <(find tools/preview-stubs/qml -name qmldir -print0)
|
||
|
|
|
||
|
|
printf 'preview-qml-stubs-ok\n'
|