Brownian motion

around the essentials…

 

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

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

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

  1. На сайті публікуємо партитури із додаванням суфікса відповідно до дати та часу збереження (генерування) партитури, напр. назва файлу ОйЧийТоКіньСтоїть_20170406_175520.pdf означає, що партитуру було згенеровано з файлу ОйЧийТоКіньСтоїть.ly 6 квітня 2017 року о 17:55:20. Звісно, такі суфікси додаються автоматично при генеруванні. Таким чином, до речі, уникаємо можливих нюансів із кешуванням опублікованого.
  2. LilyPond використовує простий текстовий формат, тому використовуємо систему зберігання та відстеження версій Mercurial.
  3. На власному комп’ютері редагуємо партитуру, після чого: hg commit && hg push.
  4. На сервері маємо те саме сховище mercurial; після редагування виконуємо hg pull && hg update.
  5. На подію update на сервері сконфігуровано 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.

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

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

(1 votes, average: 5 out of 5)

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

  1. ReAl каже:

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

    • dor каже:

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

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

Напишіть відгук

XHTML: Можете використовувати такі теґи: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Останні публікації

Most Rated

Highest Rated

Теґи

Архіви