class CompUnit::Repository::FileSystem

CompUnit::Repository::FileSystem

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

A CompUnit::Repository implementation backed by the filesystem typically used in development situations. This is what is used by -I . / -I lib (which are actually -I file#. and -I file#lib) or use lib "." / use lib "lib". Unlike CompUnit::Repository::Installation, this represents a single distribution.

Methods

method candidates

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

Return all distributions that contain a module matching the specified $name, auth, ver, and api.

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

method files

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

Return all distributions that match the specified auth ver and api, and contains a non-module file matching the specified $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

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

Returns a CompUnit mapped to the highest version distribution matching $spec from the first repository in the repository chain that contains any version of a distribution matching $spec.

method need

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

Loads and returns a CompUnit which is mapped to the highest version distribution matching $spec from the first repository in the repository chain that contains any version of a distribution matching $spec.

method load

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

Load the $file and return a CompUnit object representing it.

method loaded

method loaded(--> Iterable:D)

Returns all CompUnits this repository has loaded.

method short-id

method short-id()

Returns the repo short-id, which for this repository is file.