2026-07-15 10:45:23 +03:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
IMAGE="md2gost"
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
|
|
2026-07-16 08:20:35 +03:00
|
|
|
usage() {
|
|
|
|
|
echo "Использование: md2gost file.md [-o dir]"
|
2026-07-16 09:00:24 +03:00
|
|
|
echo " file.md - исходный Markdown-файл"
|
|
|
|
|
echo " -o dir - выходная директория (по умолчанию ./build)"
|
2026-07-16 08:20:35 +03:00
|
|
|
exit 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
# Парсим аргументы
|
|
|
|
|
INPUT_FILE=""
|
|
|
|
|
OUTPUT_DIR="./build"
|
|
|
|
|
|
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
|
|
|
case "$1" in
|
|
|
|
|
-o)
|
|
|
|
|
OUTPUT_DIR="${2:-}"
|
|
|
|
|
[[ -z "$OUTPUT_DIR" ]] && usage
|
|
|
|
|
shift 2
|
|
|
|
|
;;
|
|
|
|
|
-h|--help)
|
|
|
|
|
usage
|
|
|
|
|
;;
|
|
|
|
|
-*)
|
|
|
|
|
echo "неизвестный флаг: $1" >&2
|
|
|
|
|
usage
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
INPUT_FILE="$1"
|
|
|
|
|
shift
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
[[ -z "$INPUT_FILE" ]] && usage
|
|
|
|
|
|
|
|
|
|
# Проверяем входной файл
|
|
|
|
|
if [[ ! -f "$INPUT_FILE" ]]; then
|
|
|
|
|
echo "ошибка: $INPUT_FILE не найден" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Абсолютные пути
|
|
|
|
|
INPUT_ABS="$(realpath "$INPUT_FILE")"
|
|
|
|
|
OUTPUT_ABS="$(realpath -m "$OUTPUT_DIR")"
|
|
|
|
|
mkdir -p "$OUTPUT_ABS"
|
|
|
|
|
|
|
|
|
|
INPUT_BASE="$(basename "$INPUT_FILE")"
|
|
|
|
|
|
|
|
|
|
# Собираем образ если нужно
|
2026-07-15 10:45:23 +03:00
|
|
|
if ! docker image inspect "$IMAGE" &>/dev/null; then
|
2026-07-16 08:20:35 +03:00
|
|
|
echo "образ $IMAGE не найден, собираю..."
|
2026-07-15 10:45:23 +03:00
|
|
|
docker build -t "$IMAGE" "$SCRIPT_DIR"
|
|
|
|
|
fi
|
|
|
|
|
|
2026-07-16 09:00:24 +03:00
|
|
|
echo "-> конвертация $INPUT_FILE -> $OUTPUT_DIR/"
|
2026-07-16 08:20:35 +03:00
|
|
|
|
|
|
|
|
# Запуск контейнера:
|
|
|
|
|
# - вход: только .md файл (read-only)
|
|
|
|
|
# - выход: директория для .tex и .pdf
|
|
|
|
|
# - user: текущий пользователь (не root)
|
2026-07-15 17:48:49 +03:00
|
|
|
docker run --rm \
|
2026-07-16 08:20:35 +03:00
|
|
|
-v "$INPUT_ABS:/input/$INPUT_BASE:ro" \
|
|
|
|
|
-v "$OUTPUT_ABS:/output" \
|
|
|
|
|
--user "$(id -u):$(id -g)" \
|
|
|
|
|
"$IMAGE" "/input/$INPUT_BASE" -o /output
|