Как скомпилировать библиотеку сценариев 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). Очевидно, что это не поможет, если вы захотите сделать слияние, но это между вами и вашими старшими богами.