Ste*_*ark 4 repository code-documentation perl6
复制FindBin::libsPerl 6中的行为.
(1) Start from `$Bin`.
(2) Search for `./lib` dir's above it.
(3) prefix them to the search list.
Run Code Online (Sandbox Code Playgroud)
在P6中,这需要管理$*REPO,我认为需要使用CompUnit::RepositoryRegistry,但我在modules.perl6.org(可能因为它是核心)或docs.perl6.org上找不到任何文档.
问:CompUnit::RepositoryRegistry使用一些新目录作为前缀管理列表是正确的$*REPO吗?
问:如果是,记录在哪里CU::RR?
问:如果没有,我应该使用什么?
谢谢
寻找lib/文件夹只能使用CompUnit::Repository::FileSystemrepos - 它不适用于CompUnit::Repository::Installationrepos(已安装的模块).
据说以下是可能的:
~/repos/rakudo$ perl6 -e '\
say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem);\
my $lib = CompUnit::Repository::FileSystem.new(prefix => $*CWD.parent.absolute);\
CompUnit::RepositoryRegistry.use-repository($lib);\
say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem)
'
()
(file#/Users/ugexe/repos)
Run Code Online (Sandbox Code Playgroud)
我不确定$*REPO在编译时间之外进行修改是多么明智.我预计至少会有一些重要的预审惩罚.如果它不必是运行时,那么以下是一个选项:
~/repos/rakudo$ perl6 -e '\
BEGIN say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem);\
BEGIN my $lib = $*CWD.parent.absolute;\
BEGIN use lib $lib;\
say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem)
'
()
(file#/Users/ugexe/repos)
Run Code Online (Sandbox Code Playgroud)