{ lib, clan-core, ... }: rec { getReadme = modulename: let readme = "${clan-core}/clanModules/${modulename}/README.md"; readmeContents = if (builtins.pathExists readme) then (builtins.readFile readme) else throw "No README.md found for module ${modulename}"; in readmeContents; getShortDescription = modulename: let content = (getReadme modulename); parts = lib.splitString "---" content; description = builtins.head parts; number_of_newlines = builtins.length (lib.splitString "\n" description); in if (builtins.length parts) > 1 then if number_of_newlines > 4 then throw "Short description in README.md for module ${modulename} is too long. Max 3 newlines." else if number_of_newlines <= 1 then throw "Missing short description in README.md for module ${modulename}." else description else throw "Short description delimiter `---` not found in README.md for module ${modulename}"; }