71 lines
No EOL
1.6 KiB
Bash
Executable file
71 lines
No EOL
1.6 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
plugin="${1}"
|
|
|
|
if [ ! -d "${plugin}" ]; then
|
|
echo "ERR: ${plugin} is not a directory"
|
|
exit 1
|
|
fi
|
|
|
|
pluginname=$(basename "${plugin}")
|
|
if [[ ":all:" =~ .*:${pluginname}:.* ]]; then
|
|
echo "INF: ${plugin} ignored"
|
|
exit 0
|
|
fi
|
|
|
|
# Check for the sample.conf file
|
|
if [ ! -f "${plugin}/sample.conf" ] && [ "${pluginname}" != "modbus" ]; then
|
|
echo "ERR: ${plugin} does not contain a sample.conf file"
|
|
exit 1
|
|
fi
|
|
|
|
# Check for the sample.conf embedding into the README.md
|
|
readme="^\`\`\`toml @sample.*\.conf\b"
|
|
if ! grep -q "${readme}" "${plugin}/README.md" ; then
|
|
echo "ERR: ${plugin} is missing embedding in README"
|
|
exit 1
|
|
fi
|
|
|
|
# Check for the generator
|
|
generator="//go:generate ../../../tools/readme_config_includer/generator"
|
|
found=false
|
|
for filename in "${plugin}/"*.go; do
|
|
if [[ "${filename}" == *_test.go ]]; then
|
|
continue
|
|
fi
|
|
if ! grep -q "SampleConfig(" "${filename}"; then
|
|
continue
|
|
fi
|
|
|
|
if grep -q "^${generator}\$" "${filename}"; then
|
|
found=true
|
|
break
|
|
fi
|
|
done
|
|
|
|
if ! ${found}; then
|
|
echo "ERR: ${plugin} is missing generator statement!"
|
|
exit 1
|
|
fi
|
|
|
|
# Check for the embedding
|
|
embedding="//go:embed sample.*\.conf"
|
|
found=false
|
|
for filename in "${plugin}/"*.go; do
|
|
if [[ "${filename}" == *_test.go ]]; then
|
|
continue
|
|
fi
|
|
if ! grep -q "SampleConfig(" "${filename}"; then
|
|
continue
|
|
fi
|
|
|
|
if grep -q "^${embedding}\$" "${filename}"; then
|
|
found=true
|
|
break
|
|
fi
|
|
done
|
|
|
|
if ! ${found}; then
|
|
echo "ERR: ${plugin} is missing embedding statement!"
|
|
exit 1
|
|
fi |