does CompUnit::Repository::Locallydoes CompUnit::Repository::Installable
由文件系统支持的 CompUnit::Repository
实现,但使用内部存储格式
处理可能与
CompUnit::Repository::FileSystem
冲突的文件系统上的大小写敏感性问题。处理不支持的文件系统上的允许的文件名问题(例如 unicode)。
允许具有相同名称但具有不同
ver
和/或auth
和/或api
值的多个发行版在单个存储库中安装并单独访问。通过提供模块预编译来实现更快的模块加载。
由于内部存储格式,添加发行版的通常方式不是复制文件,而是调用 CompUnit::Repository::Installation#method_install。
方法§
方法安装§
method install(Distribution , Bool :)
将模块复制到特殊位置,以便以后可以加载它们。
:$force
将允许在具有相同 name
、auth
、api
和 ver
的现有发行版上安装。否则,这种情况将导致 Failure
。
my = CompUnit::RepositoryRegistry.repository-for-name("site");my = Distribution::Path.new(...);.install();
方法卸载§
method uninstall(Distribution )
从存储库中删除 $distribution
。$distribution
应从其被删除的存储库中获取
my = CompUnit::RepositoryRegistry.repository-for-name("site");my = .candidates("Acme::Unused").head;.uninstall();
方法候选§
multi method candidates(Str , :, :, :)multi method candidates(CompUnit::DependencySpecification )
返回包含与指定的 $name
、auth
、ver
和 api
匹配的模块的所有发行版。
my = CompUnit::RepositoryRegistry.repository-for-name("perl").prefix;my = CompUnit::Repository::Installation.new(prefix => );my = .candidates("Test").head;say "Test version: " ~ .meta<ver>; # OUTPUT: «6.d»
方法文件§
multi method files(Str , :, :, :)multi method files(CompUnit::DependencySpecification )
返回与指定的 auth
ver
和 api
匹配的所有发行版,并包含与指定的 $name
匹配的非模块文件。
# assuming Zef is installed to the default location...my = CompUnit::RepositoryRegistry.repository-for-name("site");say .files('bin/zef', :ver<419.0+>).head.<name> // "Nada"; # OUTPUT: «Nada»say .files('resources/config.txt', :ver<419.0+>).head.<name> // "Nada"; # OUTPUT: «Nada»say .files('bin/zef', :ver<0.4.0+>).head.<name>; # OUTPUT: «zef»say .files('resources/config.txt', :ver<0.4.0+>).head.<name>; # OUTPUT: «zef»
方法解析§
method resolve(CompUnit::DependencySpecification --> CompUnit)
返回一个 CompUnit
,该 CompUnit
映射到与 $spec
匹配的最高版本发行版,该发行版来自存储库链中第一个包含与 $spec
匹配的任何发行版版本的存储库。
方法需要§
method need(CompUnit::DependencySpecification ,CompUnit::PrecompilationRepository = self.precomp-repository(),CompUnit::PrecompilationStore : = self!precomp-stores(),--> CompUnit)
加载并返回一个 CompUnit
,该 CompUnit
映射到与 $spec
匹配的最高版本发行版,该发行版来自存储库链中第一个包含与 $spec
匹配的任何发行版版本的存储库。
方法加载§
method load(IO::Path --> CompUnit)
加载 $file
并返回表示它的 CompUnit
对象。
方法 loaded§
method loaded(--> Iterable)
返回此存储库已加载的所有 CompUnit
。
方法 short-id§
method short-id()
返回存储库的短 ID,对于此存储库,该 ID 为 inst
。