Wie kann ich programmatisch feststellen, ob ein Perl 6-Modul installiert ist?

7

Ich spielte mit einem Plugin-Ding herum, das Dinge laden würde, die verfügbar waren. Die Dokumente auf dem $*REPO sind nicht ganz da, also habe ich ein bisschen getippt. Das scheint zu funktionieren, aber ich habe das Gefühl, dass mir etwas Einfacheres fehlt (neben dem normalen Golfen auf den anderen Teilen):

%Vor%     
brian d foy 21.02.2018, 06:06
quelle

1 Antwort

8
%Vor%

Beachten Sie, dass dies nur bis zu einem gewissen Grad nützlich ist, da dies nur anzeigt, ob ein Modul aufgelöst werden kann. Was ich damit meine, ist, dass es auch ein nicht-installiertes Modul entdecken würde, das von einem Verzeichnis wie -I lib bereitgestellt wird, und Sie nicht wissen werden, aus welchem ​​ CompUnit :: Repository es stammt. Sie könnten auch die Ergebnisse von etwas wie $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::Installable).map(*.installed).flat

grep

Zusätzlich ist die Bedeutung eines "installierten" Moduls nicht so einfach - CompUnit::Repository::Installable repositories sind das, was wahrscheinlich impliziert ist, aber betrachte ein CompUnit :: Repository von Drittanbietern (wie zB Ссылка ) - mit diesen Modulen sind im Wesentlichen noch installiert, aber der Repo selbst ist nicht CompUnit::Repository::Installable . All :: Installable bedeutet wirklich in Rakudo ist das rakudo weiß, wie man es installiert - es hat nichts damit zu tun, was Rakudo weiß, wie man

findet und lädt

Einige PRs (geschlossen, aber ich werde später noch einmal zurückkommen), die helfen, einige dieser Probleme über ein method candidates { ... } :

zu lösen

Ссылка

Ссылка

    
ugexe 21.02.2018 15:20
quelle

Tags und Links