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.ymlis 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.