Доба́вив у Makefile
декілька прикольних дрібни́ць для роботи з черне́тками.
Що це
Що взагалі значить «черне́тка» у контексті Jekyll?
- Лежить не у
_posts
, а у_drafts
- У черне́тки зазвичай немає дати
- Черне́тки можна побачити, якщо зробити
jekyll build --drafts
- Черне́тку можна закоммітити, але в прода́кшен вона не попаде́
Для мене останній пункт є головним. Черне́тки потрібні там, де мені треба буде зробити перерву у написа́нні посту. Ну, наприклад, якщо я пишу щось довге. Або якщо я не вирішив остаточно, коли і як я буду робити публікацію.
Під час звичайної публікації поста я створюю новий файл поста (користуючись своїми методами автоматизації), пишу в нього текст, роблю звичайні git add
, git commit
та git push
, і все.
Пост, який ще не потрапив в коммі́т і не пішов на прода́кшен — це «черне́тка» у широкому сенсі цього слова, але не ота хитра хрінь, про яку далі.
Як це
Спочатку я роблю щось таке:
$ slug=better-drafts make draft
echo "---\ntitle: better-drafts\nplaceholder: here\n---\n\n..." > _drafts/better-drafts.md
Це створює черне́тку з заданим ім’ям файлу, якийсь мінімальний документ з front matter.
Щось таке:
---
title: better-drafts
date: 2021-10-07 17:36:25 +03:00
---
...
Чесно кажучи, title
могло б виглядати краще, але я все одно його завжди редакту́ю. Ну і ось цей от placeholder: here
є компромісом, але без нього поки ніяк.
Далі я, зазвичай, хочу відкрити це в редакторі (в мене це найчастіше Geany). Щоб це зробити швидше, не витрачаючи зусиль на вибір або копіювання назви файлу, я роблю таку команду:
$ make geany
git st --porcelain | egrep '(_posts|_drafts)' | cut -c 4- | xargs -L1 geany
Це просто запустить geany _drafts/better-drafts.md
і відкриє нову вкладку.
Далі, звісно, я пишу собі контент. Якщо захо́чу подивитись, що там у мене виходить, чи добре все виглядає і чи не налажа́в я з Markdown, то для цього теж є готовий target:
$ make up
jekyll build --drafts --watch
Мені легше запам’ятати назви make post
, make draft
та навіть оце make up
, аніж параметри build --drafts --watch
. Ладно, по́фіг. Це була сама тупа частина посту :)
Магія
Пишу, роблю комміти для проміжних версій, відклада́ю черне́тку у довгий ящик. Нарешті, магія:
$ make pub
[ -f _drafts/better-drafts.md ]
mv _drafts/better-drafts.md _posts/2021/2021-10-07-better-drafts.md
sed -i "s/^placeholder: here/date: 2021-10-07 17:36:25 +03:00/" _posts/2021/2021-10-07-better-drafts.md
Ім’я файлу черне́тки опціона́льне; якщо його не вказувати, буде використаний якийсь (рандомний) файл з _drafts
, лол. (Це може мати сенс, тільки якщо у вас там лише одна черне́тка).
Ну і, як бачите, дата встановлюється саме під час make pub
.
Ну і що
Не знаю, як це словами передати. Дуже приємно поєднувати типовий підхід генераторів статичних сайтів з усякою дрібною автоматиза́цією.
Коротше кажучи, зацініть мій Makefile
:)