From 0e35a1a2e9f5a5ef19ce14b785b2b4027c20dd9b Mon Sep 17 00:00:00 2001 From: Mercier Pierre-Olivier Date: Fri, 18 Oct 2013 08:48:43 +0200 Subject: [PATCH] send_git: new process to send a student repository to moulette --- process/files/send_git.pl | 52 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 process/files/send_git.pl diff --git a/process/files/send_git.pl b/process/files/send_git.pl new file mode 100644 index 0000000..7322d39 --- /dev/null +++ b/process/files/send_git.pl @@ -0,0 +1,52 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +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} // "/srv/git/repositories/$year/$project_id/$login.git"; + + return "$path is not a valid path." if (! -d $path); + + my $tempdir = tempdir(); + + qx/git clone -b '$rendu' '$path' '$tempdir'/; + + 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);