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):
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
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
Einige PRs (geschlossen, aber ich werde später noch einmal zurückkommen), die helfen, einige dieser Probleme über ein method candidates { ... }
: