Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

raku

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?

like image 627
ugexe Avatar asked Mar 26 '19 16:03

ugexe


1 Answers

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"
like image 119
ugexe Avatar answered Sep 28 '22 06:09

ugexe