Clojure CLI Tool
Exec Arguments vs Polylith Tool Documentation
The
poly
tool uses its own syntax when passing in parameters. When using the poly
command as a Clojure CLI Tool (see Install using Clojure CLI) we instead use the standard way of passing in arguments as pairs.The "native"
poly
tool has the following argument structure:- the command, followed by
- zero or more entities (e.g.,
create
can be followed bycomponent
), followed by - named arguments (e.g.,
project:example
), and - flag arguments (e.g.,
:loc
), and - profiles (e.g.,
+remote
).
Because "exec args" must follow key/value syntax, the argument structure for
-Tpoly
is:- the command (which is the "exec fn"), followed by
entity
to name the first argument(s) tocreate
orhelp
,- named arguments as key/value pairs (e.g.,
project example
), - flag arguments as keys with
true
orfalse
values (e.g.,loc true
), profiles
to list any profiles to enable, without the leading+
(e.g.,profiles '[remote]'
).
For convenience, most arguments can be provided as symbols rather than requiring quoted strings:
# strings have to be quoted for EDN and the shell:
clojure -Tpoly info project '"example"'
# the following shorthand is allowed:
clojure -Tpoly info project example
Both
project
and profile
exist in singular form, taking a symbol or string, and in a plural form, taking a vector of symbols or strings:# select more than one project:
clojure -Tpoly info projects '[example cli]'
# select just one profile:
clojure -Tpoly info profile remote
Some
poly
commands treat :brick
and :project
as flag arguments and other expect brick:name
or project:name
as named arguments. When using "exec args", the meaning is determined by whether the value is boolean or not:# select all projects:
clojure -Tpoly info project true # flag argument
# select a specific project:
clojure -Tpoly info project cli # named argument
Since the exec argument format for create becomes verbose, there are four shortcut arguments:
# full create command syntax:
clojure -Tpoly create entity component name user
# shorthand:
clojure -Tpoly create c user
# similarly for b (base), p (project), and w (workspace)
clojure -Tpoly create w next-gen top-ns com.my-company
# is shorthand for:
clojure -Tpoly create entity workspace name next-gen top-ns com.my-company
Finally, for some commands, more than one "entity" can be provided for the
entity
exec argument, those can be :
-separated (in a string), or use entities
and a vector (which can have symbols instead of strings):clojure -Tpoly help entity create:component
# equivalent to:
clojure -Tpoly help entities '[create component]'
Last modified 1yr ago