Just lurking in the REPL and it occurred to ask, about the rationale behind writing the ‘daml’ options as:
daml option not daml --option, except for daml --help ?
- Java does
java --option [arg]
- Node does
node -/--option [arg]
- Python does
python --option [arg]
- Bash does
bash --gnu_long_option
Was just interested in the back story 
2 Likes
Usually what comes after daml without the preceding -- is a (sub-)command (e.g. daml build), similar to what you would do in git (git fetch, git checkout, etc.).
The difference is shown in the help text itself:
> daml -h
Usage: daml COMMAND
Available options:
-h,--help Show this help text
Available commands:
version Display Daml version information
install Install the specified SDK version
uninstall Uninstall the specified SDK version
...
I guess daml help also makes sense, but historically the help text is often invoked with --help, so it makes sense to use this more or less common way of using it. The good thing is that any non-recognized command will make the help text show up, incidentally including daml help. 
1 Like
Happy to have helped.
One further detail I forgot to mention is that an important difference between java, node, python and bash on one side and daml on the other is that the former invoke an interpreter, whereas the latter is a tool that offers a CLI to multiple components in an SDK. In Java they have two separate commands to compile (javac) and spin up a VM running the compiler output (java), we have a single command. It’s a matter of taste, I guess. I believe git made it more common to have this kind of approach, bundling several features in a single CLI.
2 Likes