-
-
Notifications
You must be signed in to change notification settings - Fork 364
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make ./mill
without any arguments point you towards --help
, flesh out --help
into a cheat sheet
#3556
Conversation
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.
Making Mill CLI no longer accept the same old arguments means, failing in various places where Mill is used in scripts. Also many users don't have a strong idea which version of Mill they currently using, since it's not controlled by their system but by some random .mill-version
file.
Even if we don't need to produce binary compatible packages, we should have a grace period for CLI options. Any CLI option no longer accepted will be interpreted as target and most likely break some workflow. Instead, we should deprecate those options, print a warning and either ignore them if no longer supported, or internally translate to their new meaning like e.g. for --disable-ticker
. Even if no users will thank us (which is normal), if we don't do that, many will have a harder time.
The mill-integrationtest
plugin used by some other plugins will definitely break when this PR gets merged unchanged.
@arg( | ||
short = 'h', | ||
doc = | ||
"""(internal) The home directory of internally used Ammonite script engine; | ||
where it looks for config and caches.""" | ||
"""(internal) The home directory where Mill looks for config and caches.""" |
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.
I'd rather get rid of it entirely. It's a relict from Ammonite and we only have it still, since it's part exposed in our API (T.home
). The only thing we put there is the Java rt.jar
which we generate if missing and share between projects. In essence, we don't look for config here, really.
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.
Maybe installing global JVMs could require it?
We have this issue: #3480
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.
I hid/deprecated it for now
We should add the syntax guide from your screenshot to Otherwise, this is a nice topic for bikeshedding, but I would prefer shorter two line error message saying there is no target and indicating that |
A bit more motivation. The long error message might help beginners, but the long message might always get in the way now and then to the power user, when she fingered or pressed enter too fast. Needing to scroll back to focus on what the last action/output/command was. |
I put back the I also split the
|
I think this synopsis isn't correct. The first target isn't optional, except when running with |
Updated it to
So the first |
./mill
without any arguments print the help message, flesh it out into a cheat sheet./mill
without any arguments point you towards --help
, flesh out --help
into a cheat sheet
lihaoyi mill$ ./mill
We now just say, look at the help, without telling what the problem is, although we know the problem, a missing target. Should be: -Mill Build Tool, version 0.12.0-RC2-13-921d96-DIRTY16b6c61b
+ A target is missing.
+
-usage: mill [options] [target [target-options] [+ [target ...]]]
+Usage: mill [options] [target [target-options] [+ [target ...]]]
-Run `./mill --help` for more details
+Run `mill --help` for more details |
I went with |
Also removed all the leading |
Fixes #3547
I added the cheat sheet for task syntax and compacted the flag documentation so it all fits on one page in the default macbook pro 15" terminal half screen at the default font size, with some room to spare vertically and horizontally: ~55 characters tall and ~100 characters wide. Could always squeeze it more or less, and the choice of target size is arbitrary, but this should be both concise and information-dense while still giving newbies a lot of useful tips and pointers. Notably, having too much detail in any part of this blurb is a net negative: it needs to be maximally concise while still containing the most useful pieces of information. More detailed explanations and exposition can go to the doc-site, which I linked at the bottom of the cheat sheet
I also split the
usageText
intoshortUsageText
which is printed on./mill
, and long usage text which is printed on./mill --help
, with the short usage text pointing you at./mill --help
for more details:In the process I shortened the names and docs of a lot of the flags that were IMO overly verbose. Especially for more advanced features like
--meta-level
we can get away with a more terse explanation here since the docs go into much more detailAs we do not guarantee bincompat for the
mill.runner
package, so we do not need to add shims and forwarders as we evolve thecase class MillCliConfig
Notably this default blurb does not include any information about the current build, and is very generic. I don't know what the best way of inferring which modules and tasks are "important" and which are not, and so for now I just punted on the issue and just try to show syntax and tasks that should be useful for any Mill build. For now still somewhat JVM specific with compile and assembly and test; if in the future we start having more non-JVM stuff built using Mill we can make further changes then