有没有办法从Perl6模块代码中的META6.json获取版本?

时间:2019-03-26 16:19:35

标签: perl6

我想做这样的事情:

die "Fatal error: application version $MY-APPLICATION-VERSION"

由于Perl6模块无法假定与它打包在一起的文件的相对位置(例如,已安装的模块全部放入平面目录结构中),所以我不能只做$?FILE.IO.add("../META6.json").slurp。有没有办法在可能安装或可能未安装的Perl6应用程序/模块中获取META6.json中声明的版本?

1 个答案:

答案 0 :(得分:10)

从rakudo v2019.03开始,模块可以通过Distribution访问用于加载对象的$?DISTRIBUTION对象。这样可以进行以下操作:

unit module My::Module;

BEGIN my $VERSION = $?DISTRIBUTION.meta<version>;
use My::SubModule:ver($VERSION); # ensure we only ever use the version included in this distribution

die "Fatal error: application version $VERSION"