55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
cd -P -- "$(dirname -- "$0")/../.."
|
|
|
|
PROFILE="${PROFILE:-emqx}"
|
|
DIR_NAME='examples'
|
|
SCHEMA_MOD='emqx_conf_schema'
|
|
if [ "${PROFILE}" = 'emqx-enterprise' ]; then
|
|
DIR_NAME='ee-examples'
|
|
SCHEMA_MOD='emqx_enterprise_schema'
|
|
fi
|
|
|
|
IFS=$'\n' read -r -d '' -a FILES < <(find "rel/config/${DIR_NAME}" -name "*.example" 2>/dev/null | sort && printf '\0')
|
|
|
|
prepare_erl_libs() {
|
|
local libs_dir="$1"
|
|
local erl_libs="${ERL_LIBS:-}"
|
|
local sep=':'
|
|
for app in "${libs_dir}"/*; do
|
|
if [ -d "${app}/ebin" ]; then
|
|
if [ -n "$erl_libs" ]; then
|
|
erl_libs="${erl_libs}${sep}${app}"
|
|
else
|
|
erl_libs="${app}"
|
|
fi
|
|
fi
|
|
done
|
|
export ERL_LIBS="$erl_libs"
|
|
}
|
|
|
|
# This is needed when checking schema
|
|
export EMQX_ETC_DIR="apps/emqx/etc"
|
|
|
|
prepare_erl_libs "_build/$PROFILE/lib"
|
|
|
|
check_file() {
|
|
local file="$1"
|
|
erl -noshell -eval \
|
|
"File=\"$file\",
|
|
case emqx_hocon:load_and_check($SCHEMA_MOD, File) of
|
|
{ok, _} ->
|
|
io:format(\"check_example_config_ok: ~s~n\", [File]),
|
|
halt(0);
|
|
{error, Reason} ->
|
|
io:format(\"failed_to_check_example_config: ~s~n~p~n\", [File, Reason]),
|
|
halt(1)
|
|
end."
|
|
}
|
|
|
|
for file in "${FILES[@]}"; do
|
|
check_file "$file"
|
|
done
|