App-Rakubrew
view release on metacpan or search on metacpan
lib/App/Rakubrew.pm view on Meta::CPAN
if (defined $shell_version) {
say "$shell_version";
}
else {
say "$brew_name: no shell-specific version configured";
}
}
else {
my $version = shift @args;
if ($version ne '--unset') {
verify_version($version);
}
}
} elsif ($arg eq 'local') {
validate_brew_mode();
if (!@args) {
my $version = get_local_version();
if ($version) {
say $version;
}
lib/App/Rakubrew.pm view on Meta::CPAN
say "Did you mean:";
say $_ for @match;
}
}
}
sub test {
my ($self, $version) = @_;
$self->match_and_run($version, sub {
my $matched = shift;
verify_version($matched);
my $v_dir = catdir($versions_dir, $matched);
if (!-d $v_dir) {
say STDERR "Version $matched was not built by rakubrew.";
say STDERR "Refusing to try running spectest there.";
exit 1;
}
chdir catdir($versions_dir, $matched);
say "Spectesting $matched";
if (!-f 'Makefile') {
say STDERR "Can only run spectest in self built Rakudos.";
lib/App/Rakubrew/Build.pm view on Meta::CPAN
for(@{$impls{$impl}{need_repo}}) {
_update_git_reference($_);
}
run "$GIT clone --reference \"$git_reference/rakudo\" $git_repos{rakudo} $name";
}
chdir $name;
run "$GIT fetch";
# when people say 'build somebranch', they usually mean 'build origin/somebranch'
my $ver_to_checkout = $ver;
eval {
run "$GIT rev-parse -q --verify origin/$ver";
$ver_to_checkout = "origin/$ver";
};
run "$GIT checkout -q $ver_to_checkout";
$configure_opts .= ' ' . _get_git_cache_option(cwd());
run $impls{$impl}{configure} . " $configure_opts";
if (is_version_broken($name)) {
say STDERR "ERROR: The build does not look usable. There is no raku executable to be";
say STDERR "found in $versions_dir/$name/bin";
lib/App/Rakubrew/Build.pm view on Meta::CPAN
run "$PERL5 Configure.pl --backend=moar " . $configure_opts;
if (-d 'zef') {
say "Updating zef as well";
build_zef($name);
}
return $name;
}
sub _verify_git_branch_exists {
my $branch = shift;
return system("$GIT show-ref --verify -q refs/heads/" . $branch) == 0;
}
sub build_zef {
my $version = shift;
my $zef_version = shift;
_check_git();
if (-d $zef_dir) {
chdir $zef_dir;
if (!_verify_git_branch_exists('main')) {
run "$GIT fetch -q origin main";
}
run "$GIT checkout -f -q main";
run "$GIT reset --hard HEAD";
run "$GIT pull -q";
} else {
run "$GIT clone $git_repos{zef} $zef_dir";
chdir $zef_dir;
}
lib/App/Rakubrew/VersionHandling.pm view on Meta::CPAN
package App::Rakubrew::VersionHandling;
require Exporter;
our @ISA = qw( Exporter );
our @EXPORT = qw(
get_versions
get_version
version_exists
verify_version
is_version_broken is_version_path_broken
is_registered_version
get_version_path clean_version_path
get_shell_version
get_local_version set_local_version
get_global_version set_global_version
set_brew_mode get_brew_mode get_brew_mode_shell validate_brew_mode
get_raku
which whence
get_bin_paths
lib/App/Rakubrew/VersionHandling.pm view on Meta::CPAN
$path = clean_version_path($path);
return 1 if !$path;
for my $exec ('raku', 'raku.bat', 'raku.exe', 'perl6', 'perl6.bat', 'perl6.exe', 'rakudo', 'rakudo.bat', 'rakudo.exe') {
if (-f catfile($path, 'bin', $exec)) {
return 0;
}
}
return 1;
}
sub verify_version {
my $version = shift;
if (! version_exists($version) ) {
say STDERR "$brew_name: version '$version' is not installed.";
exit 1;
}
if ( is_version_broken($version) ) {
say STDERR "Version $version is broken. Refusing to switch to it.";
exit 1;
}
}
sub set_local_version {
my $version = shift;
if ($version) {
verify_version($version);
spurt($local_filename, $version);
}
else {
unlink $local_filename;
unlink '.perl6-version';
}
}
sub get_global_version {
if (!-e catfile($prefix, 'CURRENT')) {
set_global_version('system', 1);
}
my $cur = slurp(catfile($prefix, 'CURRENT'));
chomp $cur;
return $cur;
}
sub set_global_version {
my $version = shift;
my $silent = shift;
verify_version($version);
say "Switching to $version" unless $silent;
spurt(catfile($prefix, 'CURRENT'), $version);
}
sub get_version {
my $ignore = shift // '';
my $version = $ignore eq 'shell' ? undef : get_shell_version();
return $version if defined $version;
if (get_brew_mode() eq 'shim') {
( run in 0.442 second using v1.01-cache-2.11-cpan-73692580452 )