# Anakeen Platform en ligne de commande
L'exécution de programmes permettant de gérer les Smart Elements et le paramétrage en général peut être fait en ligne de
commande. Le point d'entrée de la ligne de commande dans Anakeen Platform est le script ank.php
.
# ank.php
Ce script permet de :
- lancer des scripts,
- effectuer des requêtes HTTP,
- effectuer des actions systèmes.
Son aide est disponible au moyen de l'option --help
:
Usage:
--script=<script file>
--list List all available scripts
--login Execute as special account (admin is default)
--route=<route id>
--list List all recorded routes
--method=<HTTP Method> [GET|POST|PUT|DELETE] (default GET)
--arg-<x>=<value> Route argument <x> value
--content=<data file> For POST/PUT methods
--query=<optional args> Like "a=1&b=2"
--system
--start Reset Cache and Enable Http access
--stop Disable Http access
--verbose Verbose mode
--unstop Enable Http access
--reloadConfig Reload route configuration
--upgradeVersion Reset WVERSION
--localeGen Generate locale catalog
--style Reset Css generation
--clearFile Delete file cache
--help This usage
Note
Le script ank.php
doit être exécuté, en ligne de commande, sous le même compte utilisateur que celui du serveur Apache
( afin que les fichiers produits soient accessibles par Anakeen Platform en mode Web) et ne doit en aucun cas être lancé
sous le compte utilisateur root
.
# Utilisateur effectuant l'opération
Par défaut, les opérations sont lancées sous l'identité Anakeen Platform de l'utilisateur Master Default (administrateur
principal - compte admin
). Il est possible de changer cette identité au moyen de l'option --userid
, qui prend comme
paramètre le login
d'un utilisateur Anakeen Platform, ou son identifiant système Anakeen Platform.
# Passage d'arguments
# Arguments simples
Il est possible de passer des arguments nommés en rajoutant des options avec la notation --argumentName=argumentValue
.
Le nom de l'argument correspond au nom de l'option. Ainsi, --foo=bar
assignera la valeur bar
à l'argument foo
.
Attention
Les arguments ne sont pas typés: ils sont systématiquement envoyés au format texte. Aussi, lors de l'utilisation du
paramètre --foo=true
, le script appelé recevra la valeur "true"
(string) et non pas le booléen true
.
# Arguments multivalués
Si la valeur de l'argument comporte des espaces, des guillemets doubles "
, ou les guillemets simples '
peuvent être
utilisés. ./ank.php --script=recordDevData --person=20 --client=10
Le passage d'arguments multivalués se fait au moyen de la notation --argumentName=argumentValue
répété autant de fois
que nécessaire. Ainsi, --persons[]=2 --persons[]=4
assignera la valeur array("2","4")
à l'argument persons
.
Pour la récupération des arguments, se référer à la documentation de la classe APIUsage.
# Arguments booléens
Enfin, il est possible de passer des arguments booléens avec la notation --argumentName
(sans valeur). Ainsi, --foo
assignera la valeur true
à l'argument foo
.
# Gestion des erreurs ank
Lorsqu'un shell non interactif sort en erreur, un mail contenant le détail de l'erreur peut être envoyé.
Ce mail est envoyé uniquement si le paramètre CORE_WSH_MAILTO
est non vide.
# Exécuter des scripts avec ank
Exemple d'appel:
./ank.php --script=cleanContext
Cela appellera le script /API/cleanContext.php
.
La liste des scripts disponibles est obtenu au moyen de la commande list
:
./ank.php --script --list
Script List :
- cleanContext
- cleanOldStructures
- configureShowcase
- destroyStructure
- fdl_trigger
- generateDocumentClass
- importAccounts
- importConfiguration
- importDocuments
- manageContextCrontab
- migrateAdminPlugins
- migrationUpdateAccountUI
- ods2csv
- processExecute
- recordDevData
- refreshDocuments
- refreshjsversion
- refreshUserAccount
- registerConfigDir
- setParameter
- setSessionHandler
- updateclass
- vault_init
Afin de connaître l'usage d'un script, il est possible d'utiliser l'option --help
:
./ank.php --script=cleanContext --help
Clean base
Usage:
Options:
--login=<user login name to execute function>, default is 'admin'
--help (Show usage)
--full (clean also obsolete permission, log, folder contains)
# Retour d'erreur
Le script retourne un exit status
indiquant si une erreur s'est produite. Lorsqu'une erreur se produit, son message
est retourné sur la sortie standard (stdout), et non sur la sortie d'erreur (stderr).
Codes retournés:
0
: pas d'erreur,1
: déclenchement d'une exception
Exemple:
- Script inexistant
./ank.php --script=pasTrouve
[ANK] 850> Anakeen got an uncaught exception 'Anakeen\Script\Exception' with message 'API file "/var/www/html/platform/API/pasTrouve.php" not found' in file /var/www/html/platform/vendor/Anakeen/Script/ShellManager.php at line 99:
850> Command line arguments: '--script=pasTrouve'
850> error_log:
850> #0 /var/www/html/platform/ank.php(56): Anakeen\Script\ShellManager::runScript('pasTrouve')
850> #1 {main}
[ANK] 850> End Of Exception.
- Utilisateur inconnu
./ank.php --script=refreshDocuments --famid=389 --login=testFaux
[ANK] 864> Anakeen got an uncaught exception 'Anakeen\Exception' with message 'Unknow user testFaux' in file /var/www/html/platform/vendor/Anakeen/Script/ShellManager.php at line 157:
864> Command line arguments: '--script=refreshDocuments' '--famid=389' '--login=testFaux'
864> error_log:
864> #0 /var/www/html/platform/vendor/Anakeen/Script/ShellManager.php(101): Anakeen\Script\ShellManager::initContext()
864> #1 /var/www/html/platform/ank.php(56): Anakeen\Script\ShellManager::runScript('refreshDocument...')
864> #2 {main}
[ANK] 864> End Of Exception.
# Écrire un script CLI
Les scripts exécutables avec ank
doivent être des fichiers PHP présents dans le sous-répertoire ./API
du contexte
d'installation. Ces fichiers doivent porter l'extension php
(le basename du fichier détermine le nom du script).
# Effectuer des requêtes HTTP
Exemple d'appel: ./ank.php --route=maRoute --method=GET
Cela appellera le script /API/RouteCommand.php
. La liste des routes est disponible au moyen de la commande list
:
./ank.php --route --list
Exemple de résultat:
- récupération des informations du vault :
./ank.php --route=AdminCenter::AdminVaults:AllVaultInfo --method=GET
{
"success": true,
"data": [
{
"fsid": "10",
"path": "/var/www/html/vaults/10",
"metrics": {
"totalSize": 21474836480,
"usedSize": 16347668960,
"totalCount": 64742,
"repartition": {
"usefulSize": 12373519839,
"orphanSize": 3286571969,
"trashSize": 687577152,
"usefulCount": 47633,
"orphanCount": 11563,
"trashCount": 5546
}
},
"humanMetrics": {
"totalSize": "20 Go",
"usedSize": "15 Go",
"count": 64742,
"repartition": { "usefulSize": "11 Go", "orphanSize": "3.06 GB", "trashSize": "655 Mo" }
},
"computedMetrics": { "usedSize": 16347668960 },
"disk": { "totalSize": 226160975872, "usedSize": 188502396928 },
"freespace": "4.78 GB"
}
],
"messages": []
}
# Retour d'erreur
L'exécution d'une requête erronée sur une route de Anakeen Platform en mode CLI, retourne une exception sur la sortie standard (stdout).
Exemple:
- Route inexistante
./ank.php --route=pasTrouve --method=GET
[ANK] 918> Anakeen got an uncaught exception 'Anakeen\Router\Exception' with message 'Route "pasTrouve" not exists' in file /var/www/html/platform/vendor/Anakeen/Script/RouteCommand.php at line 36:
918> Command line arguments: '--route=pasTrouve' '--method=GET'
918> error_log:
918> #0 /var/www/html/platform/ank.php(80): Anakeen\Script\RouteCommand->requestRoute('pasTrouve', Array)
918> #1 {main}
[ANK] 918> End Of Exception.
# Effectuer une commande système
Exemple d'appel: ./ank.php --system --start
Cela appellera le script ./API/system.php
Différentes commandes peuvent être lancées ici:
--system
--start Reset Cache and Enable Http access
--stop Disable Http access
--verbose Verbose mode
--unstop Enable Http access
--reloadConfig Reload route configuration
--upgradeVersion Reset WVERSION
--localeGen Generate locale catalog
--style Reset Css generation
--clearFile Delete file cache
Exemple: ./ank.php --system --localeGen
permet de générer le catalogue de langue.