2017-04-13 17 views
1

逆コンパイルおよびコンパイルが可能で、スクリプト定義(sdef)を使用してAppleScriptスクリプトライブラリ(scptd)バージョン管理のソース。スクリプト定義(sdef)を使用してAppleScriptスクリプトライブラリ(scptd)をコンパイルする方法

この質問の背景は、AppleScriptソースをgitに置くことです。私の質問のほとんどはthis stackoverflow question/answerで答えることができましたが、私の質問はここでも説明していますが、私のすべてのスクリプトをgitに入れることができません。このライブラリーtest.scptd

私は名前say it loudを持つハンドラを持っている、とsdefファイルtest.sdefでは、コードSAYTLOUDでコマンドとして宣言されています。 sdefファイルへのリンクが破損しているとsay it loudではないので

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

しかし、このソースは、osacompileしてコンパイルすることはできません。osadecompileを使用して、私はAppleScriptのテキストファイルtest.applescriptます

有効な識別子。

幸いにも、優れたエディタTextMateの一部であるバイナリcompile_assource here)が見つかりました。とき、逆コンパイルは、私は次のソースファイルtest_raw.applescript取得:コードがまだ有効のAppleScriptであり、それは実行可能だから

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

をこれは、私が欲しいものです。唯一の違いは、ハンドラを名前で呼び出すことはできませんが、生コードを使用する必要があることです。ここに問題はありません。

私の質問:どのように私はにtest.scptdtest.sdefファイルと組み合わせる(生コード付き)のAppleScriptファイルtest_raw.applescriptを、コンパイルありません。

Objective-CとOSAKit(可能であれば)で私自身のdecompile_asを作成するのは明らかな答えですが、私はそのスキルを持っていません。

答えて

0

あなたの.scptdバンドルをあなたのgitリポジトリに直接置き、全体をロットに設定するのが理想的です。

次善の解決策は、.scptdバンドルをgitリポジトリに直接置き、gitクライアントと実際のdiffコマンド(example)の間にある独自の「diff」シェルスクリプトを作成することです。シムスクリプトが.scptdという接尾辞付きのファイルを受け取ったら、osadecompileに渡し、出力をテンポラリテキストファイルに書き込み、それらのファイルパスをdiffツールに渡します。 AppleScriptの(本質的にscm-hostileな)ファイル形式を壊さずに、人間が読めるdiffファイルを提供します。明らかにマージをしたいのであれば助けにならないでしょうが、それはあなたとあなたの元老の神の間です。

+0

うん。私は '.scptd'パッケージをgitに直接置いています。 diffハンドラはコマンドラインでは役に立ちますが、GitHub DesktopのようなGUIアプリケーションでは役に立ちません。 '.scpt'ファイルと' .scptd'( '.sdef'なし)ではビルドスクリプトがあります。私は '.applescript'テキスト版で開発しています(コンパイルをたくさん押してください)。多分私はワークフローを変更するでしょう。しかし、 'sdef'装備の' scptd'はクラックするのに難しいナットです... – doekman

関連する問題