Nix Documentation | 421 Members | |
| Discussion about documentation improvements around the Nix ecosystem | 86 Servers |
| Sender | Message | Time |
|---|---|---|
| 17 Jan 2024 | ||
| * The nix manuals are built with mdbook, which has stuff like https://github.com/FauconFan/mdbook-cmdrun which might be a possible solution for repl testing | 08:12:54 | |
| Ideally the manuals should be able to reuse the same solution, but I find that hard unless the manuals move to mdbook as well (something that I have in a note to maybe explore some day) | 08:13:44 | |
In reply to @fricklerhandwerk:matrix.org Based on your input: https://github.com/NixOS/nix.dev/issues/864 I am not sure if this qualifies as low-tech. Maybe it does because all it uses is a CLI tool. With modern tools, it is easy to make a heavily automatically documented CLI tool (e.g. if using Rust: can use However, low-tech ought to be measured against cost-of-manual-work? In this particular case: cost of copying+pasting, verifying output expression against expectation, validating that examples remain valid across Nix updates. | 11:05:57 | |
In reply to @fricklerhandwerk:matrix.org* Based on your input: https://github.com/NixOS/nix.dev/issues/864 I am not sure if this qualifies as low-tech. Maybe it does because all it uses is a CLI tool. With modern tools, it is easy to make a heavily automatically documented CLI tool (e.g. if using Rust: can use However, low-tech ought to be measured against cost-of-manual-work? In this particular case: cost of copying+pasting, verifying output expression against expectation, validating that examples remain valid across Nix updates. (Regardless: not a "must-do". Only a "could-do". Happy to execute on a draft version, if time can be made for its review, with full understanding that it will likely not be accepted.) | 11:33:17 | |
| * Based on your input: https://github.com/NixOS/nix.dev/issues/864 I am not sure if this qualifies as low-tech. Maybe it does because all it uses is a CLI tool. With modern tools, it is easy to make a heavily automatically documented CLI tool (e.g. if using Rust: can use However, low-tech ought to be measured against cost-of-manual-work? In this particular case: cost of copying+pasting, verifying output expression against expectation, validating that examples remain valid across Nix updates. (Regardless: not a "must-do". Only a "could-do". Happy to execute on a draft version, if time can be made for its review, with full understanding that it will likely not be accepted. Will not create a draft version if it only adds to review burden.) | 11:34:03 | |
| Per your request, even simpler: https://github.com/NixOS/nix/pull/9793 | 11:35:04 | |
| * Based on your input: https://github.com/NixOS/nix.dev/issues/864 I am not sure if this qualifies as low-tech. Maybe it does because all it uses is a CLI tool. With modern tools, it is easy to make a heavily automatically documented CLI tool (e.g. if using Rust: can use However, low-tech ought to be measured against cost-of-manual-work? In this particular case: cost of copying+pasting, verifying output expression against expectation, validating that examples remain valid across Nix updates. (Regardless: not a "must-do". Only a "could-do". Happy to execute on a draft version, if time can be made for its review, with full understanding that it will likely not be accepted. Will not create a draft version if it only adds to review burden.) | 12:02:40 | |
| bzm3r: the doctester is coming along | 12:05:26 | |
In reply to @mightyiam:matrix.orgIs there an intro document to read which lays out the project's scope/goals? Do the simplest "parts" (as thought about in https://github.com/NixOS/nix.dev/issues/864) exist already for usage as CLI tools? | 12:08:00 | |
In reply to @mightyiam:matrix.org* Is there an intro document to read which lays out the project's scope/goals? Do the simplest "parts" (as thought about in https://github.com/NixOS/nix.dev/issues/864) exist already for usage as "manual" CLI tools? | 12:08:27 | |
| * Is there an intro document to read which lays out the project's scope/goals? Do the simplest "parts" (as thought about in https://github.com/NixOS/nix.dev/issues/864) exist already for usage as "manually invoked CLI tools? | 12:10:15 | |
| * Is there an intro document to read which lays out the project's scope/goals? Do the simplest "parts" (as thought about in https://github.com/NixOS/nix.dev/issues/864) exist already for usage as manually invoked CLI tools? | 12:10:20 | |
| Sorry, there's no documentation. There are tests for the repl examples and there are tests for the WIP expression examples. https://github.com/mobusoperandi/eelco/tree/0eb9042220befe188aa4399ffc6615579cebdd5f/crates/eelco/tests | 12:10:46 | |
| Repl example example:
| 12:11:57 | |
| Expression example example:
If it evaluates into | 12:13:49 | |
| For the expression example, we can think of a future feature where the expression is a function that will be called with a scope. | 12:16:05 | |
| The usage of assertions in examples is inspired by Rust doctests. | 12:18:23 | |
In reply to @mightyiam:matrix.orgHow does a user specify input? What kind of output does does a doc tester produce? Would you find it useful to co-opt the language/structure in the issue linked above, or does it pose unnecessary constraints on your work? | 12:22:53 | |
In reply to @mightyiam:matrix.org* How does a user specify input (is there some sort of expected syntax for that?)? What kind of output does does a doc tester produce? Would you find it useful to co-opt the language/structure in the issue linked above, or does it pose unnecessary constraints on your work? | 12:23:13 | |
| * How does a user specify input (is there some sort of expected syntax for that, or is it just a nix assertion expression)? What kind of output does does a doc tester produce? Would you find it useful to co-opt the language/structure in the issue linked above, or does it pose unnecessary constraints on your work? | 12:23:24 | |
| * How does a user specify input (e.g. is there some sort of expected syntax for that, or is it just a nix assertion expression; if the latter, can the tool take a file which is just a list of assertions to verify)? What kind of output does does a doc tester produce (is it just a pass/fail, is there a way to extract the LHS and RHS of the input assertions)? Would you find it useful to co-opt the language/structure in the issue linked above, or does it pose unnecessary constraints on your work? | 12:25:18 | |
| * How does a user specify input (e.g. is there some sort of expected syntax for that, or is it just a nix assertion expression; if the latter, can the tool take a file which is just a list of assertions to verify, even if the file is not itself a proper "*.nix"?)? What kind of output does does a doc tester produce (is it just a pass/fail, is there a way to extract the LHS and RHS of the input assertions)? Would you find it useful to co-opt the language/structure in the issue linked above, or does it pose unnecessary constraints on your work? | 12:26:50 | |
| * How does a user specify input, precisely? If I look for example at the Rust doctests page, there's a fair bit there about syntax. There's also the additional constraint that these things exist in doc strings. We don't really/necessarily have docstrings here, so how do I present a list of assertions for a nix repl to check? What kind of output does does a doc tester produce (is it just a pass/fail, is there a way to extract the LHS and RHS of the input assertions)? Would you find it useful to co-opt the language/structure in the issue linked above, or does it pose unnecessary constraints on your work? | 12:30:57 | |
| I lost you at "input". What's input, please? | 12:31:03 | |
In reply to @mightyiam:matrix.orgSorry, I realized that I wasn't being too clear, so I tried to work no improving what I mean. How do I give the program something to test? Do I give it a nix expression that is an assertion? Which assertion function precisely should I be using in that case? lib.assertMessage? One of the arguments to lib.assertMessage is a predicate to test. | 12:35:45 | |
In reply to @mightyiam:matrix.org* Sorry, I realized that I wasn't being too clear, so I tried to work on improving what I mean. How do I give the program something to test? Do I give it a nix expression that is an assertion? Which assertion function precisely should I be using in that case? lib.assertMessage? One of the arguments to lib.assertMessage is a predicate to test. | 12:35:54 | |
* Sorry, I realized that I wasn't being too clear, so I tried to work on improving what I mean. How do I give the program something to test? Do I give it a nix expression that is an assertion? Which assertion function precisely should I be using in that case? lib.assertMessage? | 12:36:10 | |
| * How does a user specify input, precisely? If I look for example at the Rust doctests page, there's a fair bit there about syntax. There's also the additional constraint that these things exist in doc strings. We don't really/necessarily have docstrings here, so how do I present to the program what is essentially a list of assertions for a nix repl to check? What kind of output does does a doc tester produce (is it just a pass/fail, is there a way to extract the LHS and RHS of the input assertions)? Would you find it useful to co-opt the language/structure in the issue linked above, or does it pose unnecessary constraints on your work? | 12:36:45 | |
The doctester is really dumb when it comes to expressions. It just passes them to nix eval. | 12:36:52 | |
| There are assertions built into the language. | 12:37:17 | |