Is there a way to get the version from META6.json in Perl6 module code?

谁说我不能喝 提交于 2019-12-19 17:37:33

问题


I want to do something like this:

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

Since a Perl6 module cannot assume the relative locations of files it was packaged with (for instance installed modules are all put into a flat directory structure) I can't just do $?FILE.IO.add("../META6.json").slurp. Is there a way to get the version declared in META6.json in a Perl6 app/module that may or may not be installed?


回答1:


As of rakudo v2019.03 modules may access the Distribution object used to load it via $?DISTRIBUTION. This allows the following:

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"


来源:https://stackoverflow.com/questions/55361810/is-there-a-way-to-get-the-version-from-meta6-json-in-perl6-module-code

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!