#plant-uml #server-client #cli #generate

bin+lib plantuml-server-client-rs

PlantUML 服务器客户端

12 个版本 (4 个重大更新)

0.5.1 2024年1月8日
0.5.0 2024年1月7日
0.4.0 2023年12月31日
0.3.0 2023年11月12日
0.1.4 2023年10月31日

#69 in 可视化

Download history 9/week @ 2024-03-10 11/week @ 2024-03-31

每月下载量 144

MIT 许可证

170KB
3.5K SLoC

plantuml-server-client-rs

PlantUML 服务器客户端。

本项目旨在创建一个工具,帮助在 CI/CD 环境中运行 PlantUML 图形生成。如果您使用 VS Code 插件在本地生成,它们在 CI/CD 环境中难以运行。

简要使用方法

请求 http://www.plantuml.com/plantuml/

cargo install plantuml-server-client-rs
{
  echo '@startuml'
  echo 'Bob -> Alice : hello'
  echo '@enduml'
} | plantuml-server-client > out.svg

功能

$ plantuml-server-client --help
The client of PlantUML Server.

Usage: plantuml-server-client [OPTIONS]

Options:
  -i, --input <INPUT>            input file path. if not specified, use stdin
  -o, --output <OUTPUT>          output file prefix. if both of `--input` and `--output` are not specified, use stdout
  -c, --config <CONFIG>          config file path. if `--config` option is specified and the configuration file fails to load, this program will exit with an error for security reasons
  -m, --method <METHOD>          HTTP Method: `"get"` | `"post"`
  -u, --url-prefix <URL_PREFIX>  Server's URL Prefix. default: `"http://www.plantuml.com/plantuml/"`. example: `"https://127.0.0.1:8080/"`
  -f, --format <FORMAT>          output format: `"svg"` | `"png"` | `"txt"`
  -C, --combined                 output pre-proccessed data has `.puml` extension
      --metadata <METADATA>      output path for metadata
  -v, --verbose...               increase log level: `-v` -> info, `-vv` -> debug. if the `PSCR_LOG` environment variable is specified, this `-v` option will ignore. related: [`init_logger`][`crate::init_logger`]
  -h, --help                     Print help
  -V, --version                  Print version

从文件配置

您可以通过配置文件省略 CLI 选项(.pscr.conf)。

cp sample.pscr.conf .pscr.conf
vim .pscr.conf

优先级:["--config" 选项指定] -> .pscr.conf -> /.config/.pscr.conf -> ${HOME}/.pscr.conf -> ${HOME}/.config/.pscr.conf

单个文件中的多个图形

如果单个指定文件中包含多个图形定义,则生成多个图形。

如果 a.puml 如下所示,

@startuml a1
title a1
a -> b
@enduml

@startuml a2
title a2
a -> b
a <- b
@enduml

您将执行以下命令。

plantuml-server-client --input a.puml --output outputs

最终,您将获得 outputs/a/a1.svgoutputs/a/a2.svg

无输出前缀

如果您执行以下命令(未指定 --output),

plantuml-server-client --input a.puml

您将获得 a/a1.svga/a2.svg。 ([源文件基本名]/[图表 ID].[扩展名])

!include 预处理

预处理完成后将生成图表。

如果 a.puml 在下面

@startuml a0
!include b.iuml!b2
!include b.iuml!1
!include b.iuml
@enduml

并且 b.iuml 在下面,

@startuml b0
Bob -> Bravo
@enduml

@startuml b1
Bob <- Bravo
@enduml

@startuml b2
Alice -> Alpha
@enduml

您将执行以下命令。

plantuml-server-client --input a.puml --output outputs

最后,您将得到由以下 PlantUML 源文本生成的 outputs/a/1.svg

@startuml a0
Alice -> Alpha
Bob <- Bravo
Bob -> Bravo
@enduml

!include_many!include_once 也受支持,但 !include_once 的多次包含不受支持(只有警告)。

写入组合文件

使用 --combined 可选参数,plantuml-server-client 将以 .puml 扩展名输出 组合 图表。一个 组合 图表是经过预处理的图表。

写入元数据

使用 --metadata 可选参数,plantuml-server-client 将在生成过程中输出元数据。输出路径由 --metadata 可选参数指定。元数据为 JSON 格式,包含用于包含过程的收集信息、图表中的标题等信息。

待办事项列表

  • !includesub 预处理
  • !$A=B 预处理(围绕 include

依赖项

~14–30MB
~427K SLoC