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

问题描述 投票:7回答:1

我想做这样的事情:

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

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

perl6
1个回答
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"
© www.soinside.com 2019 - 2024. All rights reserved.