#Declaration de l espace de travail et du chemin de l executable R :
use strict;
use Carp;
use Statistics::R;
use Cwd qw(abs_path);
use File::Basename;

#Parametres d'entree
my $count_file               =$ARGV[0]; #input count file name
my $output_file              =$ARGV[1]; #output file name

#Récuperer le numero (unique) de l'output
my ($nb) = ($output_file=~/galaxy_dataset_(\d+)\.\S+$/);

#Repertoire de sortie cree par le script, verif des droits d'ecriture sur ce repertoire de sortie
`cd /galaxydata/database/files/workspace/; mkdir $nb; chmod -R 777 $nb/; cd $nb/;`;
my $working_dir= "/galaxydata/database/files/workspace/$nb";

#les scripts R doivent être accessibles dans le repertoire de travail
`ln -s /usr/local/bioinfo/src/galaxy-dev/galaxy-dist/tools/sm_shiny/ui.R $working_dir/ui.R ; chmod a+x $working_dir/ui.R;`;
`ln -s /usr/local/bioinfo/src/galaxy-dev/galaxy-dist/tools/sm_shiny/server.R $working_dir/server.R ; chmod a+x $working_dir/server.R;`;

# Rbin path
my $r_bin   = '/usr/local/bioinfo/src/R/current/bin/R';
#Log dir
my $log_dir = $working_dir;

#déclaration de l'objet $R et ouverture du pont :
my $R = Statistics::R->new(
    "r_bin"   => $r_bin,
    "log_dir" => $log_dir,
) or die "Problem with R : $!\n";
# Ouverture du pont
$R->startR;


#envoi du repertoire de travail
$R->send(
   qq`
        setwd("$working_dir")
    `);
#Read R script
my $cmd="";


#envoi du repertoire de travail
$R->send(
   qq`
      library(shiny)
    `);
    $R->send(
   qq`
      runExample("01_hello")
    `);

## Création de la page html sortante
my $report = "$working_dir/report.html";
$R->send(
    qq`
        pdf("$report")
        dev.off()
    `
);

#Fermeture du pont
$R->stopR();

#Recuperation des outputs dans Galaxy
my $cmdhtml ='';
my $out= "$working_dir/report.html";
if (! -e $out){print STDERR "Pas de fichier html produit \n";}
else {$cmdhtml = "(mv $out $output_file) >& /galaxydata/logs/cp_html_$nb.log 2>&1";
system $cmdhtml;}
