mirror of
https://github.com/mjallen18/snowfall-lib.git
synced 2026-04-18 09:05:58 -05:00
feat: auto-extract template descriptions from flake.nix
This commit is contained in:
@@ -28,19 +28,31 @@ in {
|
|||||||
alias ? {},
|
alias ? {},
|
||||||
}: let
|
}: let
|
||||||
user-templates = snowfall-lib.fs.get-directories src;
|
user-templates = snowfall-lib.fs.get-directories src;
|
||||||
create-template-metadata = template: {
|
create-template-metadata = template: let
|
||||||
name = builtins.unsafeDiscardStringContext (baseNameOf template);
|
flake-file = template + "/flake.nix";
|
||||||
path = template;
|
has-flake = builtins.pathExists flake-file;
|
||||||
};
|
flake-attrs =
|
||||||
|
if has-flake
|
||||||
|
then import flake-file
|
||||||
|
else {};
|
||||||
|
description = flake-attrs.description or null;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = builtins.unsafeDiscardStringContext (baseNameOf template);
|
||||||
|
path = template;
|
||||||
|
}
|
||||||
|
// (
|
||||||
|
if description != null
|
||||||
|
then {inherit description;}
|
||||||
|
else {}
|
||||||
|
);
|
||||||
templates-metadata = builtins.map create-template-metadata user-templates;
|
templates-metadata = builtins.map create-template-metadata user-templates;
|
||||||
merge-templates = templates: metadata:
|
merge-templates = templates: metadata:
|
||||||
templates
|
templates
|
||||||
// {
|
// {
|
||||||
${metadata.name} =
|
${metadata.name} =
|
||||||
(overrides.${metadata.name} or {})
|
(overrides.${metadata.name} or {})
|
||||||
// {
|
// (builtins.removeAttrs metadata ["name"]);
|
||||||
inherit (metadata) path;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
templates-without-aliases = foldl merge-templates {} templates-metadata;
|
templates-without-aliases = foldl merge-templates {} templates-metadata;
|
||||||
aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias;
|
aliased-templates = mapAttrs (name: value: templates-without-aliases.${value}) alias;
|
||||||
|
|||||||
Reference in New Issue
Block a user