mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-22 18:08:16 +00:00
64 lines
1.8 KiB
Bash
Executable File
64 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Copyright (C) 2022 Internet Systems Consortium, Inc. ("ISC")
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
# Usage:
|
|
#
|
|
# check-for-missing-api-commands.sh [$kea_repo]
|
|
#
|
|
# $kea_repo is by default ${script_path}/..
|
|
|
|
set -eu
|
|
|
|
script_path=$(cd "$(dirname "${0}")" && pwd)
|
|
cd "${script_path}/.."
|
|
|
|
if test "${#}" -gt 0; then
|
|
kea_repo=${1}
|
|
else
|
|
kea_repo="${script_path}/.."
|
|
fi
|
|
|
|
# In order:
|
|
# 1. grep perl-regexp with-filename only-matching recursive null-output
|
|
# 2. Exclude doxygen files.
|
|
# 3. Exclude tests directories.
|
|
# 4. Grep for all calls to registerCommandCallout even if they span multiple lines.
|
|
# 5. Remove the null byte to be able to assign it to a variable.
|
|
# 6. Remove the newlines to be able to more easily grep further.
|
|
# 7. Remove the spaces to be able to more easily grep further.
|
|
# 8. Turn commas into newlines so that each command is on its own line.
|
|
# 9. Remove commands that are commented out in code.
|
|
# 10. Grep for the name of the command alone.
|
|
# 11. Remove double quotes from the command name.
|
|
commands=$(grep -Phorz \
|
|
--exclude '*.dox' \
|
|
--exclude-dir 'tests' \
|
|
'.*registerCommandCallout\(\s*\n*\s*".*?",' . | \
|
|
tr -d '\0' | \
|
|
tr -d '\n' | \
|
|
tr -d ' ' | \
|
|
tr ',' '\n' | \
|
|
grep -Ev '//.*registerCommandCallout' | \
|
|
grep -Eo '".*?"' | \
|
|
tr -d '"')
|
|
|
|
# Check if there is a file with the ${command}.json format in src/share/api.
|
|
failed=false
|
|
for i in ${commands}; do
|
|
if test -f "${kea_repo}/src/share/api/${i}.json"; then
|
|
printf '[ SUCCESS ] %s\n' "${i}"
|
|
else
|
|
failed=true
|
|
printf '[ FAILURE ] %s - not found in src/share/api\n' "${i}"
|
|
fi
|
|
done
|
|
|
|
if "${failed}"; then
|
|
return 1
|
|
fi
|