Create an installable Distribution from common sources.
But really this serves to provide examples on how to create your own
Distribution classes that don't rely on a specific file system directory layout before being installed.
use Distribution::Common::Git; use Distribution::Common::Tar; use Distribution::Common::Directory; # a local path with a .git folder my $git-dist = Distribution::Common::Git.new($path.IO, :$force); # a file ending in .tar.gz my $tar-dist = Distribution::Common::Tar.new($path.IO, :$force); # a plain directory like Distribution::Path for brevity my $dir-dist = Distribution::Common::Directory.new($path.IO, :$force);
Distribution from a .tar.gz archive
Distribution from a local git repo. Because this is a directory it inclusion is meant to serve as an example as
Distribution::Common::Directory will handle this similarly. In the future however it could support changing branches
Essentially the built-in
Distribution::Path but built around the
The base for the various common distribution classes. Fulfills rakudo's
Distribution role by providing its own IO interface requirements (
Distribution::IO) which do most of the actual work. It's main purpose is to fake IO::Handle methods such as open and close for IO-like access to objects that don't need to be .open before being read.
Like rakudo's own
Distribution, but with an additional requirement, ls-files, to automatically handle the setting of
Extract a single file from a distribution to memory. When
CompUnitRepository::Installation::Install.install accesses such files they are written directly to their install location instead of first using an intermediate temporary location
Basically provides a recursive file listing and little else
Distribution::Common::Tarshould handle .tar, not just .tar.gz