structurizr / cli

A command line utility for Structurizr.
https://docs.structurizr.com/cli
Apache License 2.0
491 stars 75 forks source link

Exclude wildcard not working via CLI #45

Closed gp-mlezotte closed 3 years ago

gp-mlezotte commented 3 years ago

I've encountered an issue where I'm unable to add exclude * -> * to a view in the DSL. The exact same DSL file works fine from the web editor. I should also note that I'm publishing to a local instance of Structurizr (build 2420).

Here's an example DSL:

workspace {

    model {
        user = person "User" "A user of my software system."
        softwareSystem = softwareSystem "Software System" "My software system."

        user -> softwareSystem "Uses"
    }

    views {
        systemContext softwareSystem {
            include *
            exclude * -> *
            autoLayout
        }

        styles {
            element "Software System" {
                background #1168bd
                color #ffffff
            }
            element "Person" {
                shape person
                background #08427b
                color #ffffff
            }
        }
    }

}

This is exactly the same as the example here: https://structurizr.com/dsl

However, I added the exclude * -> * line.

Here's the error info:

Pushing workspace 1 to http://localhost:8090/api
 - creating new workspace
 - parsing model and views from C:\<omitted>\structurizr\test.dsl
java.lang.RuntimeException: The element/relationship "*" does not exist
        at com.structurizr.dsl.AbstractExpressionParser.parseIdentifierExpression(AbstractExpressionParser.java:187)
        at com.structurizr.dsl.StaticViewContentParser.parseExclude(StaticViewContentParser.java:56)
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:536)
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:108)
        at com.structurizr.cli.PushCommand.run(PushCommand.java:133)
        at com.structurizr.cli.StructurizrCliApplication.run(StructurizrCliApplication.java:39)
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:795)
        at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:779)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:322)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
        at com.structurizr.cli.StructurizrCliApplication.main(StructurizrCliApplication.java:86)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:109)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
com.structurizr.dsl.StructurizrDslParserException: The element/relationship "*" does not exist at line 13: exclude * -> *
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:668)
        at com.structurizr.dsl.StructurizrDslParser.parse(StructurizrDslParser.java:108)
        at com.structurizr.cli.PushCommand.run(PushCommand.java:133)
        at com.structurizr.cli.StructurizrCliApplication.run(StructurizrCliApplication.java:39)
        at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:795)
        at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:779)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:322)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
        at com.structurizr.cli.StructurizrCliApplication.main(StructurizrCliApplication.java:86)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:109)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88)
simonbrowndotje commented 3 years ago

If you've recently upgraded the CLI, you'll need to surround * -> * in double-quotes.

gp-mlezotte commented 3 years ago

That worked, thanks for the super quick response!