Вот пример bash-скрипта, который:
$MARKDOWN_PUBLISH_DIR
,$MARKDOWN_ARTICLES_INDEX_FILE
.#!/bin/bash
# Проверка входного параметра
if [ $# -ne 1 ]; then
echo "Использование: $0 <имя_markdown_файла>"
exit 1
fi
MARKDOWN_FILE="$1"
# Проверяем, что файл существует
if [ ! -f "$MARKDOWN_FILE" ]; then
echo "Файл '$MARKDOWN_FILE' не найден"
exit 2
fi
# Проверяем, что переменные окружения заданы
if [ -z "$MARKDOWN_PUBLISH_DIR" ]; then
echo "Переменная окружения MARKDOWN_PUBLISH_DIR не задана"
exit 3
fi
if [ -z "$MARKDOWN_ARTICLES_INDEX_FILE" ]; then
echo "Переменная окружения MARKDOWN_ARTICLES_INDEX_FILE не задана"
exit 4
fi
# Имя выходного html файла
BASENAME=$(basename "$MARKDOWN_FILE" .md)
OUTPUT_HTML="$MARKDOWN_PUBLISH_DIR/${BASENAME}.html"
# PHP-скрипт для преобразования markdown в html с помощью Parsedown
PHP_SCRIPT=$(cat <<'EOF'
<?php
require_once 'vendor/autoload.php'; // путь к autoload, если используется composer
$inputFile = $argv[1];
$outputFile = $argv[2];
if (!file_exists($inputFile)) {
fwrite(STDERR, "Файл не найден: $inputFile\n");
exit(1);
}
$markdown = file_get_contents($inputFile);
$parsedown = new Parsedown();
$html = $parsedown->text($markdown);
file_put_contents($outputFile, $html);
EOF
)
# Выполнение PHP-скрипта
php -r "$PHP_SCRIPT" "$MARKDOWN_FILE" "$OUTPUT_HTML"
if [ $? -ne 0 ]; then
echo "Ошибка при преобразовании markdown в html"
exit 5
fi
# Формируем строку ссылки для вставки в индекс
LINK="<a href=\"parsed_md.html/${BASENAME}.html\">${BASENAME}</a>"
# Добавляем ссылку в индекс
echo "$LINK" >> "$MARKDOWN_ARTICLES_INDEX_FILE"
echo "Файл преобразован и сохранён: $OUTPUT_HTML"
echo "Ссылка добавлена в индекс: $MARKDOWN_ARTICLES_INDEX_FILE"
composer require erusev/parsedown
),MARKDOWN_PUBLISH_DIR
и MARKDOWN_ARTICLES_INDEX_FILE
заданы и указывают на существующие директорию и файл../md2html.sh example.md
<a href="parsed_md.html/example.html">example</a>
Если нужно, могу помочь с адаптацией под ваши условия.