-
Notifications
You must be signed in to change notification settings - Fork 92
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Refactor commands #297
base: main
Are you sure you want to change the base?
Refactor commands #297
Conversation
deemp
commented
Jan 13, 2024
•
edited
Loading
edited
- Move parts of the commands module to separate files
d035c0d
to
945a241
Compare
thanks, LGTM but just needs a rebase |
945a241
to
a22d6c4
Compare
Rebased |
modules/modules-docs.nix
Outdated
@@ -121,7 +121,7 @@ let | |||
|
|||
# TODO: handle opt.relatedPackages. What is it for? | |||
optToMd = opt: | |||
let heading = lib.showOption opt.loc; in | |||
let heading = (lib.showOption (filter isString opt.loc)) + (concatStrings (filter (x: !(isString x)) opt.loc)); in |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: the surrounding parenthesis is not needed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed that
```console | ||
(package or string convertible to it) or (list with two elements of types: [ string (package or string convertible to it) ]) or (flatOptions) | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For flake-parts users, this mix of types would make it hard to merge commands coming from different places. I would rather keep either the list, or the attrset of commands, but not both.
Let's keep things simple.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
flake-parts
I had no problems with flake-parts. See repro. May require nix flake update
.
type of commands
I couldn't invent a new option name so I made commands
either a list or an attrset.
I prefer attrsets with attrNames as command group names.
I think it should be the first-class feature and should be documented and type checked.
So, I see these approaches:
- Allow
commands
only as anattrset
- Create a new option for commands as an attrset, leave commands as a
list
- What should be the name?
- Allow
commands
to be either alist
or anattrset
, do something about merging lists and attrsets for flake-parts users.- What in particular can make it hard to merge?
- I need a concrete example of a devshell setup with flake-parts
- I find it nice to have a simpler representation that can be used to explain the nested options.
- Provide just a function that converts a
commands
attrset to a list- I don't like this idea because then
commands
attrset won't be the first-class feature and can't naturally go into docs.
- I don't like this idea because then
a22d6c4
to
4b4d7ca
Compare
4b4d7ca
to
ffa33c6
Compare