(Prawdopodobnie nie jest to satysfakcjonująca odpowiedź, ponieważ stan faktyczny sprawy nie są bardzo satysfakcjonujące, zwłaszcza w odniesieniu do stanu z dokumentacją, ale tu idzie ...)
Jeśli moduł lub klasę wersjonowanych bezpośrednio w kodzie źródłowym à la class Bar:auth<Camelia>:ver<4.8.12>
, następnie każdy kod, który importuje może go introspect:
use Bar;
say Bar.^ver; # v4.8.12
say Bar.^auth; # Camelia
# ...which is short for:
say Bar.HOW.ver(Bar); # v4.8.12
say Bar.HOW.auth(Bar); # Camelia
T on ver
i auth
metody są dostarczane przez:
Niestety, nie sądzę, meta-obiektu przewiduje obecnie sposób, aby w ścieżka źródłowa modułu/klasy.
By ręcznie przechodząc przez etapy, które use
i require
podjąć, aby załadować jednostki kompilacji, można przynajmniej dostać na ścieżce prefiksu (tj który lokalizacja z $PERL6LIB
lub use lib
lub -I
itp którego został wczytany):
my $comp-spec = CompUnit::DependencySpecification.new: short-name => 'Bar';
my $comp-unit = $*REPO.resolve: $comp-spec;
my $comp-repo = $comp-unit.repo;
say $comp-repo.path-spec; # file#/home/smls/dev/lib
say $comp-repo.prefix; # "/home/smls/dev/lib".IO
$comp-unit
to obiekt typu CompUnit
.
$comp-repo
to CompUnit::Repository::FileSystem
.
Obie strony dokumentacji nie istnieją, a $*REPO
jest krótko wymienione w list of dynamic variables.
Jeśli moduł jest częścią prawidłowo set-up distribution, można uzyskać na meta-informacji określonej w swojej META6.json
(as posted by Lloyd Fournier w wątku listy mailingowej pan wspomniał):
if try $comp-unit.distribution.meta -> %dist-meta {
say %dist-meta<ver>;
say %dist-meta<auth>;
say %dist-meta<license>;
}
["auth" to "auth", a nie "author"] (https://irclog.perlgeek.de/perl6/2017-04-20#i_14460369). – raiph
"Informacja [auth] ... pojawia się w pliku META.json, ale nie w kodzie." [TimToady, w sprawie tego problemu] (https://irclog.perlgeek.de/perl6/2017-04-20#i_14460332): "wymuszanie nowej wersji po zainstalowaniu modułu ... Wysłałem pr jnthn do naprawy błąd, ale zapomniałem podkręcić poziom patcha, więc zef go nie widzi ... name/ver/auth [musi] odpowiada unikalnemu tekstowi, jeśli jest zainstalowany w oficjalnej bibliotece [OR] zawiera skrót [krypto] jako część tożsamości [OR] git rewizji ... to będzie koszmar, jeśli nie możesz nazwać "poprawnej" wersji, której szukasz w wyjątkowy sposób ". – raiph