Closed jlaurens closed 2 weeks ago
We already have an (auto-generated) man
entry ...
Yes, please take some time to compare both man pages.
Like other (La)TeX code and tools, the documentation for l3build
is provided by texdoc
- man
support is there essentially to keep KB happy :)
(Key of course being that anything in addition to texdoc
needs to be kept in-sync, which really means auto-generation in some way.)
This man page contains things that are not in l3build.pdf
.
And things more correct as well.
The actual page is buggy, due to the approximate md
to nroff
translator.
@jlaurens if you find errors in l3build.dtx
, please let us know: they will need to be addressed there
The problem is first to agree on what is an error...
The problem is first to agree on what is an error...
how true.
but in general I think (a slightly inferior) autogenerated man page is preferable over one that has to be maintained manually and so will get stale over time ... the main documentation is l3build.dtx and anything else should derive from that.
l3build ---help
says use texdoc l3build
for more info and imho that fine and so does man l3build
So man l3build
would be slightly inferior to the man page above.
The problem is first to agree on what is an error...
Please do give details - I am not sure what errors there are in the docs, but do want to fix any
Good news. Let me start smoothly:
l3build ...
usage is incorrect. Very annoyingPlus the errors in some previous PRs of mine.
* quite every `l3build ...` usage is incorrect. Very annoying
I'm not at all sure what you mean here: as far as I know, the targets are described correctly. Could you be more specific?
* section 1.3: targets are sorted alphabetically whereas they should be organized semantically. The same for options. Extremely annoying.
That's a judgement not a error: to me (at least), alphabetical is the logical choice.
* section 5.6 is absolutely useless as is. Annoying.
I'm really not sure what you mean here: we certainly allow for additional targets, so that does need coverage. Perhaps it could be improved - it's not something that's been used a lot beyond the team ourselves.
Plus the errors in some previous PRs of mine.
* quite every `l3build ...` usage is incorrect. Very annoying
I'm not at all sure what you mean here: as far as I know, the targets are described correctly. Could you be more specific?
line 349, missing
[--] [<name(s)>]
lines 354, 358, 361, 362<name(s)>
is to the left of the options lines 401, and all similar\begin{buildcmd}{...}}
, missing[<options>]
BTW, <name1> <name2>...
is far better than <name(s)>
.
* section 1.3: targets are sorted alphabetically whereas they should be organized semantically. The same for options. Extremely annoying.
That's a judgement not a error: to me (at least), alphabetical is the logical choice.
The alphabetical order is more practical for the programmer or natural to you. What you find logical is also a judgment. Alphabetical ordering is useful when you already know the target but not if you only know what you want to do. Semantical ordering is always useful. Moreover, semantical ordering allows to group targets in subsections and share informations for a better understanding. For example alphabetically,
check
is so long beforesave
, but semantically and chronologicallycheck
should be just aftersave
. And then, you can detail the options forsave
and say in thecheck
section that options are the same plus supplemental ones.
Does --rerun
concern the check
? Because it is only mentioned in the check <name(s)>
section....
Of course I know the answer...
So the choice of alphabetical order here is not really driven by communication considerations, which can be considered an error in a documentation.
* section 5.6 is absolutely useless as is. Annoying.
I'm really not sure what you mean here: we certainly allow for additional targets, so that does need coverage. Perhaps it could be improved - it's not something that's been used a lot beyond the team ourselves.
My bad, it is only the
option_list
part that can't work as is because it is only used by require"l3build-arguments" long beforebuild.lua
is ever executed.
If target_list
is amended in build.lua
, then it is too late to have the changes in the help()
. There are also some subtleties with the bundle structure that should be addressed.
but semantically and chronologically check should be just after save
Well no. I typically use check (with option -S
) before I (re)save as I much more often change existing tests than write new ones. Which shows the problem of semantical ordering: As l3build addresses a large variety of use cases it is not always clear which semantical ordering is the best, a "neutral" ordering by alphabet is easier here.
I'm not at all sure what you mean here: as far as I know, the targets are described correctly. Could you be more specific?
line 349, missing
[--] [<name(s)>]
lines 354, 358, 361, 362<name(s)>
is to the left of the options lines 401, and all similar\begin{buildcmd}{...}}
, missing[<options>]
I think this reflects a difference in expectation. The l3build
docs assume that with the general form of command line input in mind, the info should be given in an easy-to-read way but without giving formal details. (Aside: I didn't draft the initial doc structure - and it has always made sense to me.) Thus we have
Line 349, 'missing [--] [<name(s)>]
' -
We could adjust here - I'm not sure we need the [--]
but could add the [<name(s)>]
(which with hindsight should
have been [<value(s)>]
, but that ship has sailed).
Lines 354, 358, 361, 362 '<name(s)>
is to the left of the options'
The aim here is to show where the various targets take <name(s)>
- whether or not options also apply is a distraction
\begin{buildcmd}{...}}
, missing [<options>]
Again, the aim here is to signpost the targets - adding formal stuff about options would make the docs harder to parse in my view
BTW,
<name1> <name2>...
is far better than<name(s)>
.
At least to me, <name1>
, etc., suggests a fixed maximum number (perhaps as I mainly code in TeX, where number of arguments is strictly limited).
[...] The
l3build
docs assume that with the general form of command line input in mind [...]
What is really a "general form of command line input"? Beware: "in mind" ⇒ Cognitive pressure ⇒ less understanding capacities ⇒ reading difficulties Of course this no longer applies when reading the document for the nth time, n big enough
, the info should be given in an easy-to-read way but without giving formal details. (Aside: I didn't draft the initial doc structure - and it has always made sense to me.)
Ok for the overall document structure. But there is no structure on the target list documentation, except alphabetical ordering: there is no real sense to make here. More meaning should help.
Thus we have
- Line 349, 'missing
[--] [<name(s)>]
' - We could adjust here - I'm not sure we need the[--]
but could add the[<name(s)>]
Consider this similar to the SYNOPSIS
content of the man page and l3build help
: "could" ⇒ "must".
[--]
is standard when there is a risk of collision, even with near 0% probability.
No big cost.
(which with hindsight should have been
[<value(s)>]
, but that ship has sailed).
Numbers and boolean are not expected, so "name" is a good choice.
On the contrary, "command" seems a bit more appropriate than "target", except for l3build manifest
: we wonder for what noble cause is this manifestation.
- Lines 354, 358, 361, 362 '
<name(s)>
is to the left of the options' The aim here is to show where the various targets take<name(s)>
- whether or not options also apply is a distraction
This contradicts "where ⟨target⟩ can be one of the following:"
\begin{buildcmd}{...}}
, missing[<options>]
Again, the aim here is to signpost the targets - adding formal stuff about options would make the docs harder to parse in my viewsignpost ⇒ implicit complex deciphering ⇒ reading difficulties IMO, the target reader finds "|check| target" easier to read (=decipher+understand) than "$ |l3build check|".
BTW,
<name1> <name2>...
is far better than<name(s)>
.At least to me,
<name1>
, etc., suggests a fixed maximum number (perhaps as I mainly code in TeX, where number of arguments is strictly limited).
That is not really a problem, on the contrary this is sane. The command line arguments are limited in size (and sometimes number) and this is system dependent. However, reaching the limit hardly ever happens in everyday use. Of course the limit is far bigger than with raw TeX, even if it is possible to emulate in TeX more than 9 arguments in some situations.
@u-fischer
but semantically and chronologically check should be just after save
Well no. I typically use check (with option
-S
) before I (re)save as I much more often change existing tests than write new ones. Which shows the problem of semantical ordering: As l3build addresses a large variety of use cases it is not always clear which semantical ordering is the best, a "neutral" ordering by alphabet is easier here.
check
does nothing without a prior save
2. `check` does nothing without a prior `save`
Sure, but which you need first depends on where in a development cycle you are, and what you are doing. Similarly, install
is useful when using someone else's package, but is much less so if it's your own code and you are making changes.
Here is a proposal for a man page, comments and suggestions are welcome before it is ever turned into a commit. you can
man ./l3build.1.txt
to see the man page live. It uses rather basic formatting commands but should be tested in various OS. Below is a version with no format attributes (no bold, no underline).l3build.1.txt