2020-01-31T09:00:06+09:00

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

Mojave 以降で動作する、ModuleLoader 4.0b1 を用意しています。

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

ModuleLoader のバージョン指定は、不等号を用いてAppleScript Libraries より柔軟に行うことができます。

ライブラリのバージョン番号を設定する

ライブラリのバージョン番号は、ハンドルの情報として、もしくはファイル名の一部として設定することができます。

バンドルに設定する

ライブラリのバージョンは、バンドル情報の「短い形式のバージョン」と「バンドル情報」として設定できます。スクリプトエディタを用いてこられの値を設定できます。「短い形式のバージョン」の方が優先されます。

これらは、Info.plist ファイルの "CFBundleShortVersionString" もしくは "CFBundleVersion" に相当します。

ファイル名に設定する

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

LibraryName-VERSION

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

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

バージョン番号は、ドット(.)で区切られた番号です。最後にアルファベット一文字をつけることができます。つまり、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 script "ModuleLoader"
setup(me)
log module_version_of(SimpleListLib) -- 1.5
log module_version_of(SimpleListLib_Old) -- 1.1
end tell

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

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