Canella
view release on metacpan or search on metacpan
lib/Canella/DSL.pm view on Meta::CPAN
}
sub sudo (&) {
CTX->stash("sudo" => 1);
my $guard = guard {
delete CTX->stash->{sudo};
};
$_[0]->();
}
sub run(@) {
CTX->run_cmd(@_);
}
sub run_local(@) {
my $stash = CTX->stash;
local $stash->{current_remote};
CTX->run_cmd(@_);
}
sub remote (&$) {
my ($code, $host) = @_;
my $ctx = CTX;
$ctx->stash(current_remote => Canella::Exec::Remote->new(
host => $host,
user => $ctx->parameters->get('user'),
));
$code->($host);
}
sub scp_get(@) {
my $remote = current_remote;
{
local $Log::Minimal::AUTODUMP = 1;
infof "[%s :: executing] scp_get %s", $remote->host, \@_;
}
$remote->connection->scp_get(@_);
}
sub scp_put(@) {
my $remote = current_remote;
{
local $Log::Minimal::AUTODUMP = 1;
infof "[%s :: executing] scp_put %s", $remote->host, \@_;
}
$remote->connection->scp_put(@_);
}
sub on_finish(&;$) {
my ($code, $name) = @_;
# on_finish always fires
my $guard = Canella::BlockGuard->new(
name => $name,
code => $code,
should_fire_cb => sub { 1 }
);
current_task->add_guard($guard->name, $guard);
}
( run in 0.272 second using v1.01-cache-2.11-cpan-1f129e94a17 )