Я люблю Unix-way. Тот самый, согласно которому программа должна делать одну вещь, но делать ее хорошо. А для сложных операций всегда должна быть возможность смотать изолентой несколько маленьких программ и через их взамодействие получить нужный результат.
Так что пришло время для еще одной модификации моей, с позволения сказать CMS, которая используется для этого блога.
С того момента, как монструозный вордпресс был выкинут на помойку, создание новых записей проходило примерно по одному сценарию: сначала создавалась поддиректория со всей внутренней структурой и шаблонами необходимых служебных файлов, потом эти файлы правились и писалась, собственно, заметка. В качестве языка разметки для написания текстов я использую Markdown, считая его самым простым способом получить HTML, без, собственно, написания HTML. Изначально я использовал свой псевдосинтаксис для разметки заголовков, ссылок и прочего, который, к тому же, использовался и для трансформирования текстовиков в TeX-разметку, но Markdown оказался более простым, наглядным и надежным. Что еще важнее, Markdown является решением стандартным, часто используемым и проверенным временем. А что до относительной бедности выразительных средств, предоставляемых Markdown-ом, то я придерживаюсь позиции, согласно которой наличие богатого набора средств для выражения, не является требованием все эти средства применять.
К тому же, Markdown-разметка даже в виде plain-text-файла выглядит и читается просто замечательно (что логично, она для этой цели и создавалась).
После того, как заметка написана, ее нужно преобразовать в HTML. Для этого у меня в .zshrc была создана функция, в теле которой и происходило все самое интересное. Markdown конвертировался в HTML, получившийся HTML оборачивался в шаблон страницы с хидером и футером, в конце генерировались превьюшки для картинок. Где-то в процессе формирования HTML-я в череду pipe-ов влез мой небольшой скрипт, который добавляет пропущенные дефисы, делает правильные тире и наводит прочую косметику. Он совершенно необязателен и его его оттуда убрать, процесс формирования HTML не нарушится.
В принципе, этот подход прекрасно работал, но у него был нюанс - ему всегда требовался мой кастомный .zshrc с правильной функцией. Это никогда не было проблемой, так как данный конфиг мигрирует у меня с машины на машину уже лет десять, дополняясь новыми алиасами и функциями, да и в любом случае, кроме .zshrc требуются и остальные мои скрипты. Но с данным подходом, логика создания страниц оказалась вынесенной куда-то за пределы самого блога. И если скрипты и так объединены в отдельный git-репозиторий, который представляет не контентную, а программную часть блога, вносить в этот репозиторий общесистемный пользовательский .zshrc было бы очень странным маневром.