forked from clan/clan-core
34 lines
1.0 KiB
Nix
34 lines
1.0 KiB
Nix
{ 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}";
|
|
}
|