Как скомпилировать библиотеку сценариев AppleScript (scptd) с определением сценариев (sdef)

Я хочу иметь возможность декомпилировать и компилировать AppleScript Script Library (scptd) с определением сценариев (sdef), чтобы я мог поместить источник текста в систему управления версиями.

Предпосылкой этого вопроса является размещение моих источников AppleScript в git , Этим вопросом / ответом на стекопоток был дан ответ на большинство моих вопросов, но мой вопрос, описанный здесь, все еще не позволяет мне поместить все мои скрипты в git.

В этой библиотеке test.scptd У меня есть обработчик с именем say it loud и в sdef файл test.sdef объявляется как команда с кодом SAYTLOUD,

Когда используешь osadecompile Я получаю текстовый файл AppleScript test.applescript:

on say it loud whatToSay
  do shell script "say " & quoted form of whatToSay
end on say it loud

Однако этот источник не может быть скомпилирован с osacompile потому что ссылка на sdef файл был сломан и say it loud не является действительным идентификатором.

К счастью, я нашел двоичный файл compile_as ( источник здесь), который является частью превосходного редактора TextMate. Когда, декомпилируя, я получаю следующий исходный файл test_raw.applescript:

on «event SAYTLOUD» whatToSay
  do shell script "say " & quoted form of whatToSay
end «event SAYTLOUD»

Это то, что я хочу, потому что код все еще действительный AppleScript, и он работает. Разница лишь в том, что вы не можете вызывать обработчик по имени, но вам нужно использовать необработанный код. Здесь нет проблем.

Мой вопрос: как мне скомпилировать файл AppleScript? test_raw.applescript (с необработанными кодами) в сочетании с test.sdef файл в test.scptd,

Очевидным ответом было бы создать свой собственный decompile_as с Objective-C и OSAKit (если это возможно), но я не обладаю необходимыми навыками.

1 ответ

Идеальное решение - поставить свой .scptd связывает прямо в ваш git-репозиторий, а затем поджигает всю партию.

Вторым лучшим решением является поставить ваш .scptd связывается непосредственно с вашим git-репозиторием, затем напишите свой собственный скрипт оболочки 'diff', который находится между вашим клиентом git и вашей реальной командой diff ( пример). Когда скрипт shim получает файлы с .scptd суффиксы, передайте их osadecompile и запишите выходные данные во временные текстовые файлы, а затем передайте эти пути к файлу в свой инструмент сравнения. Это даст вам удобочитаемые различия в форматах без необходимости ломать форматы файлов AppleScript (по своей природе scm-hostile). Очевидно, что это не поможет, если вы захотите сделать слияние, но это между вами и вашими старшими богами.

Другие вопросы по тегам