2016-08-01T04:30:45+09:00

ModuleLoader のマニュアルのドラフト - ライブラリのバージョンの指定

現在執筆中の ModuleLoader のマニュアルのドラフト第4弾です。

デフォルトでは、最初に名前が一致したライブラリがロードされます。同じ名前の違うバージョンのライブラリがインストールされている場合、ロードするライブラリのバージョンの条件を指定することができます。

モジュールのバージョン番号

モジュールのバージョンは、バンドルの Info.plist ファイルの "CFBundleShortVersionString" もしくは "CFBundleVersion" で設定することができます。"CFBundleShortVersionString" の方が優先されます。

もしくは、ファイル名に含めることができます。ファイル名にバージョンを含める場合は、ライブラリ名の後ろにハイフンでバージョン番号をつなげます。すなわち、

LibraryName-VERSION

例えば、"LibraryName-1.2.3.scpt" などです。

もし、バンドルの Info.plist とファイル名の両方にバージョン番号がある場合は、ファイル名のバージョン番号が優先されます。

バージョン番号は、ドット(.)で区切られた番号です。最後にアルファベット一文字をつけることができます。つまり、1.2.3, 0.33.0, 1.0b などです。

ロードするライブラリのバージョンに条件をつける

ロードするバージョンは、module コマンドの version パラメータで指定します。

module ["LibraryName"] version "[x.x.x] [>= x.x.x] [> x.x.x] [<= x.x.x] [< x.x.x]"

角括弧は、省略可能である事を示します。バージョン指定パラメータ単純にバージョン番号 x.x.x を指定するだけでなく、不等号を用いて条件を細かく設定できます。不等号を省略した場合は、">=" を指定した場合と同じ意味になります。

ロードされたモジュールのバージョンは、loader スクリプトmodule_version_of ハンドラで調べることができます。

property SimpleListLib : module version "1.5" -- same to ">=1.5"
property SimpleListLib_Old : module "SimpleListLib" version "<1.5 >1.0"

tell (boot (module loader) for me)
log module_version_of(SimpleListLib) -- 1.5
log module_version_of(SimpleListLib_Old) -- 1.1
end tell

優先されるライブラリの順番

  1. ファイル名にバージョン番号が含まれないライブラリをまず探します。バンドルに設定されたバージョン番号が条件に一致するなら、ファイル名にバージョン番号を含まないライブラリがロードされます。
  2. 次に、ファイル名にバージョンを持ったモジュールを探します。この時に、バンドルに設定されているバージョン番号は無視されます。同一階層の中で、条件にマッチする最も大きなバージョン番号を持ったライブラリがロードされます。