18
18
use Symfony \Component \Console \Input \InputOption ;
19
19
use Symfony \Component \Console \Output \OutputInterface ;
20
20
use Symfony \Component \Workflow \Dumper \GraphvizDumper ;
21
+ use Symfony \Component \Workflow \Dumper \MermaidDumper ;
21
22
use Symfony \Component \Workflow \Dumper \PlantUmlDumper ;
22
23
use Symfony \Component \Workflow \Dumper \StateMachineGraphvizDumper ;
23
24
use Symfony \Component \Workflow \Marking ;
@@ -51,7 +52,7 @@ protected function configure()
51
52
52
53
<info>DOT</info>: %command.full_name% <workflow name> | dot -Tpng > workflow.png
53
54
<info>PUML</info>: %command.full_name% <workflow name> --dump-format=puml | java -jar plantuml.jar -p > workflow.png
54
-
55
+ <info>MERMAID</info>: %command.full_name% <workflow name> --dump-format=mermaid | mmdc -o workflow.svg
55
56
EOF
56
57
)
57
58
;
@@ -75,13 +76,20 @@ protected function execute(InputInterface $input, OutputInterface $output): int
75
76
throw new InvalidArgumentException (sprintf ('No service found for "workflow.%1$s" nor "state_machine.%1$s". ' , $ serviceId ));
76
77
}
77
78
78
- if ('puml ' === $ input ->getOption ('dump-format ' )) {
79
- $ transitionType = 'workflow ' === $ type ? PlantUmlDumper::WORKFLOW_TRANSITION : PlantUmlDumper::STATEMACHINE_TRANSITION ;
80
- $ dumper = new PlantUmlDumper ($ transitionType );
81
- } elseif ('workflow ' === $ type ) {
82
- $ dumper = new GraphvizDumper ();
83
- } else {
84
- $ dumper = new StateMachineGraphvizDumper ();
79
+ switch ($ input ->getOption ('dump-format ' )) {
80
+ case 'puml ' :
81
+ $ transitionType = 'workflow ' === $ type ? PlantUmlDumper::WORKFLOW_TRANSITION : PlantUmlDumper::STATEMACHINE_TRANSITION ;
82
+ $ dumper = new PlantUmlDumper ($ transitionType );
83
+ break ;
84
+
85
+ case 'mermaid ' :
86
+ $ transitionType = 'workflow ' === $ type ? MermaidDumper::TRANSITION_TYPE_WORKFLOW : MermaidDumper::TRANSITION_TYPE_STATEMACHINE ;
87
+ $ dumper = new MermaidDumper ($ transitionType );
88
+ break ;
89
+
90
+ case 'dot ' :
91
+ default :
92
+ $ dumper = ('workflow ' === $ type ) ? new GraphvizDumper () : new StateMachineGraphvizDumper ();
85
93
}
86
94
87
95
$ marking = new Marking ();
0 commit comments