|
1 | 1 | { |
| 2 | + config, |
2 | 3 | lib, |
3 | 4 | wlib, |
4 | 5 | pkgs, |
|
17 | 18 | moduleStartsOpen ? null, |
18 | 19 | }: |
19 | 20 | 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; |
36 | 29 | } |
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 | + } |
38 | 37 | ); |
39 | 38 |
|
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 { |
41 | 65 | prefix = "wlib.modules."; |
42 | 66 | package = pkgs.hello; |
43 | 67 | includeCore = false; |
|
49 | 73 | _: _: _: |
50 | 74 | true; |
51 | 75 | }) wlib.modules; |
52 | | - wrapper_docs = builtins.mapAttrs (buildModuleDocs { |
| 76 | + drv.wrapper_docs = builtins.mapAttrs (buildModuleDocs { |
53 | 77 | prefix = "wlib.wrapperModules."; |
54 | 78 | }) 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; |
62 | 83 | books.nix-wrapper-modules = { |
63 | 84 | book = { |
64 | 85 | book = { |
|
130 | 151 | name = "Core Options Set"; |
131 | 152 | data = "numbered"; |
132 | 153 | 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"; |
137 | 158 | } |
138 | 159 | { |
139 | 160 | name = "`wlib.modules.default`"; |
140 | 161 | data = "numbered"; |
141 | 162 | path = "modules/default.md"; |
142 | | - src = module_docs.default; |
| 163 | + src = "${placeholder "generated"}/module_docs/default.md"; |
143 | 164 | } |
144 | 165 | { |
145 | 166 | name = "Helper Modules"; |
146 | 167 | data = "numbered"; |
147 | 168 | path = "md/helper-modules.md"; |
148 | 169 | src = ./md/helper-modules.md; |
149 | | - subchapters = lib.mapAttrsToList (n: v: { |
| 170 | + subchapters = lib.mapAttrsToList (n: _: { |
150 | 171 | name = n; |
151 | 172 | data = "numbered"; |
152 | 173 | 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" ]); |
155 | 176 | } |
156 | 177 | { |
157 | 178 | name = "Wrapper Modules"; |
158 | 179 | data = "numbered"; |
159 | 180 | path = "md/wrapper-modules.md"; |
160 | 181 | src = ./md/wrapper-modules.md; |
161 | | - subchapters = lib.mapAttrsToList (n: v: { |
| 182 | + subchapters = lib.mapAttrsToList (n: _: { |
162 | 183 | name = n; |
163 | 184 | data = "numbered"; |
164 | 185 | path = "wrapperModules/${n}.md"; |
165 | | - src = v; |
166 | | - }) wrapper_docs; |
| 186 | + src = "${placeholder "generated"}/wrapper_docs/${n}.md"; |
| 187 | + }) config.drv.wrapper_docs; |
167 | 188 | } |
168 | 189 | ]; |
169 | 190 | }; |
|
0 commit comments