LilyPond → WordPress: поновлювати опубліковані партитури просто!

Posted on

Задача: маємо багато партитур, опублікованих на сайті під WordPress, інтенсивно з ними працюємо, — тож варто мати механізм поновлення партитур після редагування. Ноти набираємо у LilyPond.

Дуже коротко:

  1. На сайті публікуємо партитури із додаванням суфікса відповідно до дати та часу збереження (генерування) партитури, напр. назва файлу ОйЧийТоКіньСтоїть_20170406_175520.pdf означає, що партитуру було згенеровано з файлу ОйЧийТоКіньСтоїть.ly 6 квітня 2017 року о 17:55:20. Звісно, такі суфікси додаються автоматично при генеруванні. Таким чином, до речі, уникаємо можливих нюансів із кешуванням опублікованого.
  2. LilyPond використовує простий текстовий формат, тому використовуємо систему зберігання та відстеження версій Mercurial Git.
  3. На власному комп’ютері редагуємо партитуру, після чого: git commit && git push.
  4. На сервері маємо те саме сховище Git; після редагування виконуємо git pull.
  5. На подію post-merge на сервері сконфігуровано hook, який запускає скрипт.
  6. Скрипт видає перелік файлів .ly, які, імовірно, треба поновити на сайті WordPress. При цьому ми могли редагувати, наприклад, ОйЧийТоКіньСтоїть_alto.lyi (а не сам ОйЧийТоКіньСтоїть.ly) — скрипт показує саме «головний» файл.
  7. Наступні кроки може виконувати цей саме скрипт, проте це не задача сховища ,) Віддамо це іншому скрипту.
  8. Інший скрипт бере файл по файлу усі партитури, які, імовірно, треба поновити. Для кожної партитури:
    1. Знаходимо у каталозі wp-uploads нашого сайту раніше завантажені файли: ОйЧийТоКіньСтоїть_([0-9]{8}_[0-9]{6}).pdf.
    2. Якщо щось знайшли — виконуємо lilypond -o ОйЧийТоКіньСтоїть_`date +"%Y%m%d_%H%M%S"` ОйЧийТоКіньСтоїть.ly.
    3. Якщо успішно — кличемо wp cli! Він замінить (операція search-replace) у табличках WordPress усі згадки ОйЧийТоКіньСтоїть_<стара_дата> на ОйЧийТоКіньСтоїть_<нова_дата>.
    4. Видаляємо у wp-uploads старі файли, переносимо туди нові.

І все)

Насправді це все трохи складніше, бо ми використовуємо мітки для генерування різних варіантів із одного джерела (при цьому файли з мітками можуть називатися ОйЧийТоКіньСтоїть--Torig_20170407_101222.pdf). Крім того, до якихось файлів WordPress уже міг додати «порядковий номер», тоді назва буде, наприклад, така: ОйЧийТоКіньСтоїть--Torig_20170407_101222-1.pdf.

Але це все легко вирішується.

Звісно ж, це можна застосувати не тільки до партитур, а й до будь-яких файлів, які треба періодично поновлювати.

2 Replies to “LilyPond → WordPress: поновлювати опубліковані партитури просто!”

  1. До речі, про сервер зі сховищем. Це той же, де сайт, чи «на балконі», а десь інде лише резервні копії?
    (про своє ніяк не вирішу, де що зберігати)

    1. Ну, наше сховище лежить у бітовомукошикові (bitbucket.org). Тобто, «головне».

      На сервері — рівноправна «робоча копія», там треба також lilypond та всі шрифти (якщо не власні ліліпондячі).

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.