Bartender.pm 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package Bartender;
  2. use Dancer2;
  3. use Data::Dumper;
  4. use POSIX ();
  5. our $VERSION = '0.1';
  6. get '/shake' => sub {
  7. my %param = params;
  8. my $opt_dossier = $param{dossier};
  9. my $opt_base = $param{projetPadPrincipal};
  10. my $opt_garde = $param{projetPadGarde};
  11. my $opt_projet = $param{projetId};
  12. my $cocktail = config->{cocktail}{binary};
  13. if(not defined $cocktail) {
  14. my $error->{message} = qq{"cocktail:binary" n'est pas configuré dans config.yml};
  15. return template 'error', $error;
  16. }
  17. elsif(not -x $cocktail) {
  18. my $error->{message} = qq{cocktail: "$cocktail" n'est pas executable};
  19. return template 'error', $error;
  20. }
  21. system("$cocktail -d $opt_dossier -b '$opt_base' -g '$opt_garde' -p $opt_projet &");
  22. redirect request->referer;
  23. };
  24. get '/status' => sub {
  25. my %param = params;
  26. my $opt_dossier = $param{dossier};
  27. my $opt_projet = $param{projetId};
  28. my $cocktail_store = config->{cocktail}{store};
  29. die unless -d $cocktail_store;
  30. my $compilation_status;
  31. if(-e "$cocktail_store/$opt_dossier/$opt_projet.lock") {
  32. $compilation_status = "En cours de compilation...";
  33. }
  34. elsif(-e "$cocktail_store/$opt_dossier/$opt_projet.pdf") {
  35. my @stat = stat "$cocktail_store/$opt_dossier/$opt_projet.pdf";
  36. my $ctime = $stat[10];
  37. my $date_time = POSIX::strftime("%Y-%m-%d %H:%M:%S", localtime($ctime) );
  38. $compilation_status = $date_time;
  39. }
  40. else {
  41. $compilation_status = "Aucune compilation.";
  42. }
  43. header 'Content-Type' => 'application/json';
  44. return to_json { text => $compilation_status };
  45. };
  46. true;