2021-02-05 17:12:51 +00:00
|
|
|
|
{ lib }:
|
2020-04-24 23:36:52 +00:00
|
|
|
|
# helper functions for packaging programs with plugin systems
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/* Takes a list of expected plugin names
|
|
|
|
|
* and compares it to the found plugins given in the file,
|
|
|
|
|
* one plugin per line.
|
|
|
|
|
* If the lists differ, the build fails with a nice message.
|
|
|
|
|
*
|
|
|
|
|
* This is helpful to ensure maintainers don’t miss
|
|
|
|
|
* the addition or removal of a plugin.
|
|
|
|
|
*/
|
|
|
|
|
diffPlugins = expectedPlugins: foundPluginsFilePath: ''
|
|
|
|
|
# sort both lists first
|
|
|
|
|
plugins_expected=$(mktemp)
|
2021-02-05 17:12:51 +00:00
|
|
|
|
(${lib.concatMapStrings (s: "echo \"${s}\";") expectedPlugins}) \
|
2020-04-24 23:36:52 +00:00
|
|
|
|
| sort -u > "$plugins_expected"
|
|
|
|
|
plugins_found=$(mktemp)
|
|
|
|
|
sort -u "${foundPluginsFilePath}" > "$plugins_found"
|
|
|
|
|
|
|
|
|
|
if ! mismatches="$(diff -y "$plugins_expected" "$plugins_found")"; then
|
|
|
|
|
echo "The the list of expected plugins (left side) doesn't match" \
|
|
|
|
|
"the list of plugins we found (right side):" >&2
|
|
|
|
|
echo "$mismatches" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
}
|