forked from clan/clan-core
35 lines
1.1 KiB
Nix
35 lines
1.1 KiB
Nix
{ clan-core, lib }:
|
|
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;
|
|
# Partition the parts into the first part (the readme content) and the rest (the metadata)
|
|
parsed = builtins.partition ({ index }: if index >= 2 then false else true) (
|
|
lib.filter ({ index, ... }: index != 0) (lib.imap0 (index: part: { inherit index part; }) parts)
|
|
);
|
|
|
|
# Use this if the content is needed
|
|
# readmeContent = lib.concatMapStrings (v: "---" + v.part) parsed.wrong;
|
|
|
|
meta = builtins.fromTOML (builtins.head parsed.right).part;
|
|
in
|
|
if (builtins.length parts >= 3) then
|
|
meta.description
|
|
else
|
|
throw "Short description delimiter `---` not found in README.md for module ${modulename}";
|
|
}
|