In the docstring for clojure.tools.cli/parse-opts
(seen here), it says,
:id The key for this option in the resulting option map. This
is normally set to the keywordized name of the long option
without the leading dashes.
Multiple option entries can share the same :id in order to
transform a value in different ways, but only one of these
option entries may contain a :default(-fn) entry.
This option is mandatory.
The final line says "This option is mandatory." which is technically true for parse-opts' internals, but it's not true for users because (as the first paragraph says) :id
is also generated by keywordizing the long option.
May I recommend changing it to be more explicit? Something like "If a long option is not provided, this option is mandatory."