From 8d680dd1adf8249e6945d8a90d02504d60af6003 Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Sat, 15 Aug 2020 17:30:56 +0200 Subject: [PATCH] Meta: Lint for duplicate endpoint IDs We currently have 16 endpoints. The IDs are typed by a human at creation time. This check will detect with we ever use an endpoint ID twice. Since the large irrelevant directories are ignored, this should be quick enough. --- .travis.yml | 1 + Meta/lint-ipc-ids.sh | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100755 Meta/lint-ipc-ids.sh diff --git a/.travis.yml b/.travis.yml index 5f905108d2..fc11dda354 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,6 +40,7 @@ script: - export SERENITY_ROOT="$(pwd)" - Meta/lint-shell-scripts.sh - Meta/lint-executable-resources.sh +- Meta/lint-ipc-ids.sh - Meta/check-style.sh - cd Toolchain - TRY_USE_LOCAL_TOOLCHAIN=y ./BuildIt.sh diff --git a/Meta/lint-ipc-ids.sh b/Meta/lint-ipc-ids.sh new file mode 100755 index 0000000000..78ffdedb4f --- /dev/null +++ b/Meta/lint-ipc-ids.sh @@ -0,0 +1,18 @@ +#!/bin/sh +set -e pipefail + +script_path=$(cd -P -- "$(dirname -- "$0")" && pwd -P) +cd "$script_path/.." + +ALL_ENDPOINTS=$(find \( -name Toolchain -o -name Build -o -name .git -o -name Ports \) -prune -o -name '*.ipc' -print0 | xargs -0 grep -P '^endpoint ' | sort -k4 -n) + +BAD_ENDPOINTS=$(echo "${ALL_ENDPOINTS}" | cut -d' ' -f4 | uniq -d) + +if [ -n "${BAD_ENDPOINTS}" ] +then + echo "This is the full list of all endpoints:" + echo "${ALL_ENDPOINTS}" + echo "These endpoint IDs are duplicated:" + echo "${BAD_ENDPOINTS}" + exit 1 +fi