From fffcce6d29718a37217672e03a0deff379509a49 Mon Sep 17 00:00:00 2001 From: matt1432 Date: Tue, 18 Feb 2025 13:48:19 -0500 Subject: [PATCH] feat(gen-docs): add metadata of all scoped packages --- apps/gen-docs/getScopesMeta.nix | 31 +++++++++++++++++++++++ apps/gen-docs/script.sh | 25 +++++++++++++----- apps/gen-docs/templates/scopedPackages.md | 13 +++++++--- 3 files changed, 59 insertions(+), 10 deletions(-) create mode 100644 apps/gen-docs/getScopesMeta.nix diff --git a/apps/gen-docs/getScopesMeta.nix b/apps/gen-docs/getScopesMeta.nix new file mode 100644 index 00000000..a6090d04 --- /dev/null +++ b/apps/gen-docs/getScopesMeta.nix @@ -0,0 +1,31 @@ +attr: selfPath: let + inherit (builtins) currentSystem getFlake mapAttrs removeAttrs replaceStrings; + + self = getFlake selfPath; + scopes = import "${selfPath}/${attr}" {description = true;}; + + trimNewlines = s: replaceStrings ["\n"] [" "] s; +in { + attrs = + mapAttrs (n: v: { + desc = trimNewlines v; + packages = let + scopePkgs = removeAttrs self.${attr}.${currentSystem}.${n} [ + "buildFirefoxXpiAddon" + "callPackage" + "newScope" + "override" + "overrideDerivation" + "overrideScope" + "packages" + "recurseForDerivations" + ]; + in + mapAttrs (_: pkg: { + desc = trimNewlines (pkg.meta.description or ""); + homepage = pkg.meta.homepage or ""; + }) + scopePkgs; + }) + scopes; +} diff --git a/apps/gen-docs/script.sh b/apps/gen-docs/script.sh index e169df82..7a1803c9 100755 --- a/apps/gen-docs/script.sh +++ b/apps/gen-docs/script.sh @@ -1,4 +1,4 @@ -substitute() { +substituteDerivs() { echo '' | pandoc --metadata-file <( nix eval \ --impure \ @@ -20,13 +20,24 @@ substituteAttrs() { ) -t markdown --template "$FLAKE/apps/gen-docs/templates/$1.md" -o "$FLAKE/$1/README.md" } -substitute "appsPackages" "apps" "getPackageMeta" -substitute "nixosConfigurations" "configurations" "getConfigMeta" -substitute "devShells" "devShells" "getPackageMeta" -substitute "packages" "packages" "getPackageMeta" +substituteScopes() { + echo '' | pandoc --metadata-file <( + nix eval \ + --impure \ + --json \ + --expr "\"$FLAKE\"" \ + --apply "(import \"$FLAKE/apps/gen-docs/getScopesMeta.nix\") \"$1\"" | + jq -r + ) -t markdown --template "$FLAKE/apps/gen-docs/templates/$1.md" -o "$FLAKE/$1/README.md" +} + +substituteDerivs "appsPackages" "apps" "getPackageMeta" +substituteDerivs "nixosConfigurations" "configurations" "getConfigMeta" +substituteDerivs "devShells" "devShells" "getPackageMeta" +substituteDerivs "packages" "packages" "getPackageMeta" + substituteAttrs "modules" substituteAttrs "homeManagerModules" substituteAttrs "overlays" -# TODO: add metadata of all packages -substituteAttrs "scopedPackages" +substituteScopes "scopedPackages" diff --git a/apps/gen-docs/templates/scopedPackages.md b/apps/gen-docs/templates/scopedPackages.md index 7adf0319..011321d3 100644 --- a/apps/gen-docs/templates/scopedPackages.md +++ b/apps/gen-docs/templates/scopedPackages.md @@ -4,8 +4,15 @@ This directory contains every package scopes exposed by this flake. ## List of my package scopes found in `self.scopedPackages` -| Name | Description | -| ---- | ----------- | $for(attrs/pairs)$ -| `$it.key$` | $it.value.desc/nowrap$ | +### $it.key$ + +$it.value.desc/nowrap$ + +| Name | Description | Homepage | +| ---- | ----------- | -------- | +$for(it.value.packages/pairs)$ +| `$it.key$` | $it.value.desc/nowrap$ | $it.value.homepage/nowrap$ | +$endfor$ + $endfor$