Skip to content

Commit 540de37

Browse files
committed
refactor(docgen): 1 drv
make it 1 build
1 parent ce7b3a7 commit 540de37

File tree

1 file changed

+58
-37
lines changed

1 file changed

+58
-37
lines changed

docs/default.nix

Lines changed: 58 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
config,
23
lib,
34
wlib,
45
pkgs,
@@ -17,27 +18,50 @@ let
1718
moduleStartsOpen ? null,
1819
}:
1920
name: module:
20-
pkgs.writeText "${name}-${prefix}-docs" (
21-
(if title != null then "# ${title}\n\n" else "# `${prefix}${name}`\n\n")
22-
+ wrapperModuleMD (
23-
wlib.evalModule [
24-
module
25-
{
26-
_module.check = false;
27-
inherit pkgs;
28-
${if package != null then "package" else null} = package;
29-
}
30-
]
31-
// {
32-
inherit includeCore;
33-
${if descriptionStartsOpen != null then "descriptionStartsOpen" else null} = descriptionStartsOpen;
34-
${if descriptionIncluded != null then "descriptionIncluded" else null} = descriptionIncluded;
35-
${if moduleStartsOpen != null then "moduleStartsOpen" else null} = moduleStartsOpen;
21+
(if title != null then "# ${title}\n\n" else "# `${prefix}${name}`\n\n")
22+
+ wrapperModuleMD (
23+
wlib.evalModule [
24+
module
25+
{
26+
_module.check = false;
27+
inherit pkgs;
28+
${if package != null then "package" else null} = package;
3629
}
37-
)
30+
]
31+
// {
32+
inherit includeCore;
33+
${if descriptionStartsOpen != null then "descriptionStartsOpen" else null} = descriptionStartsOpen;
34+
${if descriptionIncluded != null then "descriptionIncluded" else null} = descriptionIncluded;
35+
${if moduleStartsOpen != null then "moduleStartsOpen" else null} = moduleStartsOpen;
36+
}
3837
);
3938

40-
module_docs = builtins.mapAttrs (buildModuleDocs {
39+
in
40+
{
41+
imports = [
42+
wlib.wrapperModules.mdbook
43+
./redirects.nix
44+
];
45+
mainBook = "nix-wrapper-modules";
46+
outputs = [
47+
"out"
48+
"generated"
49+
];
50+
drv.unsafeDiscardReferences.generated = true;
51+
drv.preBuild = ''
52+
mkdir -p "$generated/wrapper_docs"
53+
jq -r '.wrapper_docs | to_entries[] | @base64' "$NIX_ATTRS_JSON_FILE" | while read -r entry; do
54+
# decode base64 to get JSON safely
55+
decoded=$(echo "$entry" | base64 --decode)
56+
echo "$(echo "$decoded" | jq -r '.value')" > "$generated/wrapper_docs/$(echo "$decoded" | jq -r '.key').md"
57+
done
58+
mkdir -p "$generated/module_docs"
59+
jq -r '.module_docs | to_entries[] | @base64' "$NIX_ATTRS_JSON_FILE" | while read -r entry; do
60+
decoded="$(echo "$entry" | base64 --decode)"
61+
echo "$(echo "$decoded" | jq -r '.value')" > "$generated/module_docs/$(echo "$decoded" | jq -r '.key').md"
62+
done
63+
'';
64+
drv.module_docs = builtins.mapAttrs (buildModuleDocs {
4165
prefix = "wlib.modules.";
4266
package = pkgs.hello;
4367
includeCore = false;
@@ -49,16 +73,13 @@ let
4973
_: _: _:
5074
true;
5175
}) wlib.modules;
52-
wrapper_docs = builtins.mapAttrs (buildModuleDocs {
76+
drv.wrapper_docs = builtins.mapAttrs (buildModuleDocs {
5377
prefix = "wlib.wrapperModules.";
5478
}) wlib.wrapperModules;
55-
in
56-
{
57-
imports = [
58-
wlib.wrapperModules.mdbook
59-
./redirects.nix
60-
];
61-
mainBook = "nix-wrapper-modules";
79+
drv.core_docs = buildModuleDocs {
80+
package = pkgs.hello;
81+
title = "Core (builtin) Options set";
82+
} "core" wlib.core;
6283
books.nix-wrapper-modules = {
6384
book = {
6485
book = {
@@ -130,40 +151,40 @@ in
130151
name = "Core Options Set";
131152
data = "numbered";
132153
path = "lib/core.md";
133-
src = buildModuleDocs {
134-
package = pkgs.hello;
135-
title = "Core (builtin) Options set";
136-
} "core" wlib.core;
154+
build = ''
155+
jq -r '.core_docs' "$NIX_ATTRS_JSON_FILE" > "$generated/core.md"
156+
'';
157+
src = "${placeholder "generated"}/core.md";
137158
}
138159
{
139160
name = "`wlib.modules.default`";
140161
data = "numbered";
141162
path = "modules/default.md";
142-
src = module_docs.default;
163+
src = "${placeholder "generated"}/module_docs/default.md";
143164
}
144165
{
145166
name = "Helper Modules";
146167
data = "numbered";
147168
path = "md/helper-modules.md";
148169
src = ./md/helper-modules.md;
149-
subchapters = lib.mapAttrsToList (n: v: {
170+
subchapters = lib.mapAttrsToList (n: _: {
150171
name = n;
151172
data = "numbered";
152173
path = "modules/${n}.md";
153-
src = v;
154-
}) (removeAttrs module_docs [ "default" ]);
174+
src = "${placeholder "generated"}/module_docs/${n}.md";
175+
}) (removeAttrs config.drv.module_docs [ "default" ]);
155176
}
156177
{
157178
name = "Wrapper Modules";
158179
data = "numbered";
159180
path = "md/wrapper-modules.md";
160181
src = ./md/wrapper-modules.md;
161-
subchapters = lib.mapAttrsToList (n: v: {
182+
subchapters = lib.mapAttrsToList (n: _: {
162183
name = n;
163184
data = "numbered";
164185
path = "wrapperModules/${n}.md";
165-
src = v;
166-
}) wrapper_docs;
186+
src = "${placeholder "generated"}/wrapper_docs/${n}.md";
187+
}) config.drv.wrapper_docs;
167188
}
168189
];
169190
};

0 commit comments

Comments
 (0)