#!/usr/bin/env perl use strict; use warnings; use Carp; use v5.10; use File::Path qw(remove_tree); use File::Temp qw/tempfile tempdir/; use ACU::Log; use ACU::Process; sub process { my ($given_args, $args) = @_; my $year = $args->{param}{year}; my $project_id = $args->{param}{id}; my $rendu = $args->{param}{rendu}; my $login = $args->{param}{login}; my $path = $args->{param}{path} // "ssh://git\@localhost/$year/$project_id/$login.git"; my $tempdir = tempdir(); qx/git clone -b '$rendu' '$path' '$tempdir'/; croak "$path is not a valid repository." if (! $?); my $tar; open my $fh, "tar -czf - -C '$tempdir' . |"; $tar .= $_ while(<$fh>); close $fh; # Clean remove_tree($tempdir); return Process::Client::launch("moulette_get", { "type" => "std", "id" => $project_id, "year" => $year, "rendu" => $rendu, "login" => $login, "file" => "rendu.tgz" }, { "rendu.tgz" => $tar }); } Process::register("send_git", \&process);