52 lines
1.5 KiB
Bash
Executable File
52 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Render Report/puml/fig_*.puml → Report/images/fig_*.png (имя PNG = @startuml в файле).
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPORT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
PUML_DIR="$REPORT_DIR/puml"
|
|
IMG_DIR="$REPORT_DIR/images"
|
|
GOST_CFG="$PUML_DIR/plantuml-gost.cfg"
|
|
|
|
mkdir -p "$IMG_DIR"
|
|
|
|
if [[ -z "${JAVA_HOME:-}" ]]; then
|
|
for j in /usr/lib/jvm/java-21-openjdk /usr/lib/jvm/java-17-openjdk; do
|
|
if [[ -x "$j/bin/java" ]]; then
|
|
export JAVA_HOME="$j"
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
export PATH="${JAVA_HOME:+$JAVA_HOME/bin:}$PATH"
|
|
|
|
JAR="${PLANTUML_JAR:-/usr/share/java/plantuml/plantuml.jar}"
|
|
JAVA_BIN="${JAVA_HOME:+$JAVA_HOME/bin/}java"
|
|
if [[ ! -f "$JAR" ]]; then
|
|
echo "plantuml.jar not found at $JAR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -f "$GOST_CFG" ]]; then
|
|
python3 "$SCRIPT_DIR/normalize_puml_gost.py" >/dev/null
|
|
fi
|
|
|
|
shopt -s nullglob
|
|
PUML_FILES=("$PUML_DIR"/fig_*.puml)
|
|
if ((${#PUML_FILES[@]} == 0)); then
|
|
echo "No fig_*.puml in $PUML_DIR" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Лимит растра PlantUML (по умолчанию 4096); fig_04_domain_class упирался в 8192.
|
|
export PLANTUML_LIMIT_SIZE="${PLANTUML_LIMIT_SIZE:-16384}"
|
|
"$JAVA_BIN" -Djava.awt.headless=true \
|
|
-DPLANTUML_LIMIT_SIZE="$PLANTUML_LIMIT_SIZE" \
|
|
-Xmx3g \
|
|
-jar "$JAR" \
|
|
-charset UTF-8 -tpng \
|
|
${GOST_CFG:+-config "$GOST_CFG"} \
|
|
-o "$IMG_DIR" "${PUML_FILES[@]}"
|
|
|
|
echo "Done. $(ls -1 "$IMG_DIR"/fig_*.png 2>/dev/null | wc -l) PNG in images/"
|