Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the version of a module [duplicate]

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 401
ugexe Avatar asked Nov 17 '22 02:11

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 194
ugexe Avatar answered Dec 15 '22 22:12

ugexe