The CLI tool supports “linting” of Concord YAML files. It can validate the syntax of flows and expressions without actually running them.
concord lint [-v] [target dir]
The lint
command parses and validates Concord YAML files located in the
current directory or directory specified as an argument. It allows to quickly
verify if the DSL syntax and the syntax of
expressions are correct.
Currently, it is not possible to verify whether the tasks are correctly called and/or their parameter types are correct. It is also does not take dynamically imported resources into account.
For example, the following concord.yml
is missing a closing bracket in the
playbook expression.
flows:
default:
- task: ansible
in:
playbook: "${myPlaybookName" # forgot to close the bracket
Running concord lint
produces:
$ concord lint
ERROR: @ [/home/ibodrov/tmp/lint/test/concord.yml] line: 3, col: 13
Invalid expression in task arguments: "${myPlaybookName" in IN VariableMapping [source=null, sourceExpression=null, sourceValue=${myPlaybookName, target=playbook, interpolateValue=true] Encountered "<EOF>" at line 1, column 16.Was expecting one of: "}" ... "." ... "[" ... ";" ... ">" ... "gt" ... "<" ... "lt" ... ">=" ... "ge" ... "<=" ... "le" ... "==" ... "eq" ... "!=" ... "ne" ... "&&" ... "and" ... "||" ... "or" ... "*" ... "+" ... "-" ... "?" ... "/" ... "div" ... "%" ... "mod" ... "+=" ... "=" ...
------------------------------------------------------------
Found:
profiles: 0
flows: 1
forms: 0
triggers: 0
(not counting dynamically imported resources)
Result: 1 error(s), 0 warning(s)
INVALID
The linting feature is in very early development, more validation rules are added in future releases.
Note: this feature supports only concord-v2
flows.
The CLI tool forces the runtime
parameter value to concord-v2
.
The CLI tool can run Concord flows locally:
# concord.yml
flows:
default:
- log: "Hello!"
$ concord run
Starting...
21:23:45.951 [main] Hello!
...done!
By default, concord run
copies all files in the current directory into
a $PWD/target
directory – similarly to Maven.
The concord run
command doesn’t use a Concord Server, the flow execution is
purely local. However, if the flow uses external
dependencies or
imports a working network connection might be
required.