Я люблю 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 было бы очень странным маневром.