structurizr/cli

It does not support expression for elements with efferent/afferent couplings

kyoh86 opened this issue · 2 comments

There's some advanced expressions like below

https://github.com/structurizr/dsl/blob/master/docs/language-reference.md#expressions

  • -><identifier|expression>: the specified element(s) plus afferent couplings
  • <identifier|expression>->: the specified element(s) plus efferent couplings
  • -><identifier|expression>->: the specified element(s) plus afferent and efferent couplings

But this CLI does NOT support them.
Trying exporting views, we get the error like below.

$ docker run -it --rm -v ${PWD}c4:/usr/local/structurizr structurizr/cli export --workspace workspace.dsl --format mermaid --animation true --output output
Exporting workspace from workspace.dsl
 - loading workspace from DSL
java.lang.NullPointerException
        at com.structurizr.dsl.AbstractExpressionParser.findAfferentCouplings(AbstractExpressionParser.java:154)
        at com.structurizr.dsl.StaticViewExpressionParser.findAfferentCouplings(StaticViewExpressionParser.java:43)
        at com.structurizr.dsl.AbstractExpressionParser.parseIdentifierExpression(AbstractExpressionParser.java:222)
        at com.structurizr.dsl.AbstractExpressionParser.evaluateExpression(AbstractExpressionParser.java:130)
        at com.structurizr.dsl.AbstractExpressionParser.parseExpression(AbstractExpressionParser.java:37)
        at com.structurizr.dsl.StaticViewContentParser.parseInclude(StaticViewContentParser.java:28)
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:567)
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:122)
        at com.structurizr.cli.ExportCommand.run(ExportCommand.java:112)
        at com.structurizr.cli.StructurizrCliApplication.run(StructurizrCliApplication.java:36)
        at com.structurizr.cli.StructurizrCliApplication.main(StructurizrCliApplication.java:81)
com.structurizr.dsl.StructurizrDslParserException: NullPointerException at line 1037: include ->element.tag==board->
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:737)
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:122)
        at com.structurizr.cli.ExportCommand.run(ExportCommand.java:112)
        at com.structurizr.cli.StructurizrCliApplication.run(StructurizrCliApplication.java:36)
        at com.structurizr.cli.StructurizrCliApplication.main(StructurizrCliApplication.java:81)

That particular feature is new to the DSL and hasn't yet been released onto Maven Central or the CLI yet ... I'll hopefully do a release later this week or next.

This is now available in v1.18.0.