add descriptive output when creating templates

this includes a `welcomeText` attribute which can be set in the
template, as well as outputing which files were created.
This commit is contained in:
Taeer Bar-Yam 2022-02-15 11:50:14 -05:00
parent 5b809f9e0e
commit f3a2940e70
2 changed files with 14 additions and 0 deletions

View file

@ -37,6 +37,10 @@ A flake can declare templates through its `templates` and
* `path`: The path of the directory to be copied. * `path`: The path of the directory to be copied.
* `welcomeText`: A block of text to display when a user initializes a new flake
based on this template.
Here is an example: Here is an example:
``` ```
@ -45,6 +49,10 @@ outputs = { self }: {
templates.rust = { templates.rust = {
path = ./rust; path = ./rust;
description = "A simple Rust/Cargo project"; description = "A simple Rust/Cargo project";
welcomeText = ''
You've created a simple Rust/Cargo template.
Visit https://www.rust-lang.org/ for more info.
'';
}; };
templates.defaultTemplate = self.templates.rust; templates.defaultTemplate = self.templates.rust;

View file

@ -728,6 +728,7 @@ struct CmdFlakeInitCommon : virtual Args, EvalCommand
else else
throw Error("file '%s' has unsupported type", from2); throw Error("file '%s' has unsupported type", from2);
files.push_back(to2); files.push_back(to2);
notice("wrote: %s", to2);
} }
}; };
@ -738,6 +739,11 @@ struct CmdFlakeInitCommon : virtual Args, EvalCommand
for (auto & s : files) args.push_back(s); for (auto & s : files) args.push_back(s);
runProgram("git", true, args); runProgram("git", true, args);
} }
auto welcomeText = cursor->maybeGetAttr("welcomeText");
if (welcomeText) {
notice("\n----------\n");
notice(welcomeText->getString());
}
} }
}; };