Commit 381b2ab0 authored by Guillaume Huard's avatar Guillaume Huard
Browse files

Additionnal error messages and documentation

parent 5ca5d6e8
......@@ -17,7 +17,7 @@
#+END_SRC
Cette documentation présente le script =vpladmin= disponible à l'URL :
[[https://gricad-gitlab.univ-grenoble-alpes.fr/projet/vplpp/-/raw/master/caseine?inline=false][https://gricad-gitlab.univ-grenoble-alpes.fr/projet/vplpp/-/raw/master/vpladmin?inline=false]]
[[https://gricad-gitlab.univ-grenoble-alpes.fr/projet/vplpp/-/blob/master/vpladmin][https://gricad-gitlab.univ-grenoble-alpes.fr/projet/vplpp/-/blob/master/vpladmin]]
permettant d'interagir avec un VPL depuis la ligne de commande.
* VPLID et /token/
......@@ -27,9 +27,100 @@ Pour pouvoir interagir avec un VPL, deux choses sont nécessaires :
/Common module settings/. On peut le fournir à la commande =vpladmin= via la variable
d'environnement =VPLADMIN_ID= ou via l'option =id=.
- un /token/ : spécifique à l'utilisateur, présent les infos utilisateur (/Profile/ puis /Security
keys/ via le menu de réglages) à la rubrique =VPL web service=). On peut le fournir à la commande
keys/ via le menu de réglages, à la rubrique =VPL web service=). On peut le fournir à la commande
=vpladmin= via la variable d'environnement =VPLADMIN_TOKEN= ou via l'option =token=.
* Commandes disponibles
Outre les options, le premier argument à donner à =vpladmin= est la commande à exécuter :
Outre les options, les premiers arguments à donner à =vpladmin= sont la commande à exécuter suivie
de ses éventuels arguments :
- =info= : récupère toutes les infos concernant le VPL (titre, description, fichiers, ...) ;
- =open= : récupère les fichiers de la dernière soumission ;
- =evaluate= : lance l'évaluation sur le serveur ;
- =get_result= : récupère le résultat de l'évaluation ;
- =get_setting nom= : récupère l'info de nom donné (pour la liste des noms disponibles, consulter la
documentation des webservices de caséine à l'url :
[[https://moodle.caseine.org/mod/wiki/view.php?pageid=199][https://moodle.caseine.org/mod/wiki/view.php?pageid=199]] en fin de page) ;
- =set_setting nom=valeur= : affecte la valeur donnée à l'info de nom donné ;
- =set_setting nom:fichier= : affecte le contenu du fichier donné comme valeur à l'info de nom donné ;
- =save=, =save_required_files=, =save_corrected_files=, =save_execution_files= : sauve les fichiers donnés
dans les arguments qui suivent dans la catégorie correspondant à la commande (respectivement soumission,
fichiers requis, correction et fichiers d'exécution).
* Options
Toutes les options peuvent être données par leur nom long (=--nom_long=), par un préfixe non ambigu
de ce nom long ou par leur nom court (=-première_lettre_du_nom_long=). Pour la variante courte, les
options peuvent être groupées (=-plusieurs_lettres_de_nom_court=).
- help : affiche une petite documentation et quitte le programme ;
- server url : url du serveur (à partir duquel =webservice/rest/server.php= est
accessible). Utilise =https://moodle.caseine.org= par défaut où la variable d'environnement
=VPLADMIN_SERVER= si elle est définie ;
- id : numéro d'identification du VPL. Utilise par défaut la variable d'environnement =VPLADMIN_ID= si
elle est définie ;
- token : token personnel de l'utilisateur. Utilise par défaut la variable d'environnement
=VPLADMIN_TOKEN= si elle est définie ;
- debug : affiche quelques informations de debug ;
- json : affiche les réponses du serveur en json plutôt qu'en XML.
* Exemples
=vpladmin= affiche la sortie brute du serveur, au format XML (par défaut) ou Json (option
=--json=). Elle est retranscrite dans le cadre qui suit la commande pour tous les exemples qui
suivent.
Pour récupérer le titre d'un vpl (sur cet exemple celui de numéro 21593) :
#+begin_src shell :eval yes :exports both :results output
./vpladmin --id 21593 get_setting name
#+end_src
#+RESULTS:
: <?xml version="1.0" encoding="UTF-8" ?>
: <RESPONSE>
: <SINGLE>
: <KEY name="value"><VALUE>&lt;b&gt;Schtroumpf vert&lt;/b&gt; et &lt;b&gt;vert Schtroumpf&lt;/b&gt;</VALUE>
: </KEY>
: </SINGLE>
: </RESPONSE>
Pour récupérer son nombre d'évaluations gratuites au format Json :
#+begin_src shell :eval yes :exports both :results output
./vpladmin --id 21593 --json get_setting freeevaluations
#+end_src
#+RESULTS:
: {"value":"1"}
Pour fixer à '*Schtroumpf vert* et *vert Schtroumpf*' le descriptif du vpl de numéro 19435 :
#+begin_src shell :eval yes :exports both :results output
./vpladmin --id 19435 --json set_setting intro='<b>Schtroumpf vert</b> et <b>vert Schtroumpf</b>'
#+end_src
#+RESULTS:
: {"success":true}
Pour fixer ce descriptif au contenu du fichier =Command_line.html= :
#+begin_src shell :eval yes :exports both :results output
./vpladmin --id 19435 set_setting intro:Command_Line.html
#+end_src
#+RESULTS:
: <?xml version="1.0" encoding="UTF-8" ?>
: <RESPONSE>
: <SINGLE>
: <KEY name="success"><VALUE>1</VALUE>
: </KEY>
: </SINGLE>
: </RESPONSE>
Pour placer dans ce VPL deux fichiers d'exécution :
#+begin_src shell :eval yes :exports both :results output
./vpladmin --id 19435 save_execution_files vpladmin Command_Line.html
#+end_src
#+RESULTS:
: <?xml version="1.0" encoding="UTF-8" ?>
: <RESPONSE>
: </RESPONSE>
Pas de commande pour supprimer des fichiers :'(
......@@ -5,11 +5,12 @@ use File::Slurp;
use Getopt::Long qw(:config bundling);
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0;
my $url = 'https://moodle.caseine.org/webservice/rest/server.php';
my $url = 'https://moodle.caseine.org';
my $debug=0;
my $json=0;
my $vplid=$ENV{'VPLADMIN_ID'};
my $token=$ENV{'VPLADMIN_TOKEN'};
$url=$ENV{'VPLADMIN_SERVER'} if exists($ENV{'VPLADMIN_SERVER'});
sub help();
sub failure($);
......@@ -75,9 +76,10 @@ my @commands = keys(%handlers);
sub help() {
print <<"END";
usage :
$0 [ --help ] [ --json ] [ --token value ] [ --id value ] command [ arguments ]
$0 [ --help ] [ --json ] [ --server url ] [ --token value ] [ --id value ] command [ arguments ]
Pushes data to caseine, where :
- server is the url at which one can find the 'webservice/rest/server.php' service (by default it is https://moodle.caseine.org or VPLADMIN_SERVER if defined)
- token is the personnal token associated to the user of this script (by default, the value of the VPLADMIN_TOKEN environment variable)
- id is the id number of the involved VPL (by default, the value of the VPLADMIN_ID environment variable)
- the output is in JSON format is the --json option is given
......@@ -98,6 +100,7 @@ sub failure($) {
}
GetOptions('help|h|?' => \&help,
'server|s=s' => \$url,
'id|i=s' => \$vplid,
'token|t=s' => \$token,
'debug|d' => \$debug,
......@@ -105,7 +108,11 @@ GetOptions('help|h|?' => \&help,
);
#failure "Missing command" if scalar(@ARGV) == 0;
debug "VPLID = $vplid, TOKEN = $token, ARGS = @ARGV\n";
debug "SERVER = $url, VPLID = $vplid, TOKEN = $token, ARGS = @ARGV\n";
failure "Missing token" unless defined($token);
failure "Missing VPL ID" unless defined($vplid);
$url .= '/webservice/rest/server.php';
my $command = shift @ARGV;
my $content = [
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment