class CompUnit::Repository::FileSystem
    does CompUnit::Repository::Locally
    does CompUnit::Repository
    { }

一个 CompUnit::Repository 实现,由通常用于开发情况的文件系统支持。这是 -I . / -I lib(实际上是 -I file#.-I file#lib)或 use lib "." / use lib "lib" 使用的内容。与 CompUnit::Repository::Installation 不同,这表示一个单一发行版。

方法§

方法候选§

multi method candidates(Str:D $name:$auth:$ver:$api)
multi method candidates(CompUnit::DependencySpecification $spec)

返回包含与指定 $nameauthverapi 匹配的模块的所有发行版。

# assuming one is cloned into the zef git repository... 
my $repo = CompUnit::Repository::FileSystem.new(prefix => $*CWD);
with $repo.candidates("Zef").head -> $dist {
    say "Zef version: " ~ $dist.meta<version>;
}
else {
    say "No candidates for 'Zef' found";
}

方法文件§

multi method files(Str:D $name:$auth:$ver:$api)
multi method files(CompUnit::DependencySpecification $spec)

返回与指定 auth verapi 匹配,且包含与指定 $name 匹配的非模块文件的所有发行版。

# assuming one is cloned into the zef git repository... 
my $repo = CompUnit::Repository::FileSystem.new(prefix => $*CWD);
say $repo.files('bin/zef':ver<419.0+>).head.<name>              // "Nada"# OUTPUT: «Nada␤» 
say $repo.files('resources/config.txt':ver<419.0+>).head.<name> // "Nada"# OUTPUT: «Nada␤» 
 
say $repo.files('bin/zef':ver<0.4.0+>).head.<name>;                        # OUTPUT: «zef␤» 
say $repo.files('resources/config.txt':ver<0.4.0+>).head.<name>;           # OUTPUT: «zef␤»

方法解析§

method resolve(CompUnit::DependencySpecification $spec --> CompUnit:D)

返回一个 CompUnit,该 CompUnit 映射到与 $spec 匹配的最高版本发行版,该发行版来自包含与 $spec 匹配的任何版本发行版的存储库链中的第一个存储库。

方法需要§

method need(
    CompUnit::DependencySpecification $spec,
    CompUnit::PrecompilationRepository $precomp = self.precomp-repository(),
    CompUnit::PrecompilationStore :@precomp-stores = self!precomp-stores(),
    --> CompUnit:D)

加载并返回一个 CompUnit,该 CompUnit 映射到与 $spec 匹配的最高版本发行版,该发行版来自包含与 $spec 匹配的任何版本发行版的存储库链中的第一个存储库。

方法加载§

method load(IO::Path:D $file --> CompUnit:D)

加载 $file 并返回一个表示它的 CompUnit 对象。

方法已加载§

method loaded(--> Iterable:D)

返回此存储库已加载的所有 CompUnit

方法短 ID§

method short-id()

返回存储库短 ID,对于此存储库,该 ID 为 file

属性扩展§

my $repo = CompUnit::RepositoryFileSystem.new(:prefix($*CWD));
say $repo.extensions# OUTPUT: «[rakumod pm6 pm]␤»

prefix 不包含 META6.json 文件时,存储库将考虑为 Raku 模块的文件扩展名。可以通过设置路径规范中的属性,在包含库路径本身时设置此属性

    # Like '-I lib', but only considers .rakumod and .pm6 files as raku modules
    raku -I "file#extensions<rakumod pm6>#lib" -e 'use MyModule'