86 lines
5.1 KiB
PHP
86 lines
5.1 KiB
PHP
<?php
|
|
namespace nur\ref;
|
|
|
|
/**
|
|
* Class ref_args: référence du format des arguments pour une application
|
|
*/
|
|
class ref_args {
|
|
const DEFS_SCHEMA = [
|
|
"set_defaults" => [null, null, "tableau contenant des paramètres et des options par défaut"],
|
|
"merge_arrays" => [null, null, "liste de tableaux à merger à celui-ci avant de calculer la liste effective des options"],
|
|
"merge" => [null, null, "tableau à merger à celui-ci avant de calculer la liste effective des options",
|
|
# si merge_arrays et merge sont spécifiés tous les deux, "merge" est mergé après "merge_arrays"
|
|
],
|
|
"prefix" => [null, null, "texte à afficher avant l'aide générée automatiquement"],
|
|
"name" => [null, null, "nom du programme, utilisé pour l'affichage de l'aide"],
|
|
"purpose" => [null, null, "courte description de l'objet de ce programme"],
|
|
"usage" => [null, null, "exposé textuel des arguments valides du programme",
|
|
# ce peut être une chaine e.g '[options] SRC DESC'
|
|
# ou un tableau auquel cas autant de lignes que nécessaire sont affichées
|
|
],
|
|
"description" => [null, null, "description longue de l'objet du programme, affiché après usage"],
|
|
"suffix" => [null, null, "texte à afficher après l'aide générée automatiquement"],
|
|
"dynamic_command" => [null, null, "fonction indiquant si une commande est valide",
|
|
# la signature de la fonction est function(string $command):?array
|
|
# elle doit retourner un tableau au format DEFS_SCHEMA qui définit la
|
|
# commande spécifiée, ou null si ce n'est pas une commande valide
|
|
],
|
|
"sections" => [null, null, "liste de sections permettant de grouper les arguments"],
|
|
"commandname" => [null, null, "propriété ou clé qui obtient la commande courante",
|
|
# la valeur par défaut est "command" si ni commandproperty ni commandkey ne sont définis
|
|
],
|
|
"commandproperty" => [null, null, "comme commandname mais force l'utilisation d'une propriété"],
|
|
"commandkey" => [null, null, "comme commandname mais force l'utilisation d'une clé"],
|
|
"argsname" => [null, null, "propriété ou clé qui obtient les arguments restants",
|
|
# la valeur par défaut est "args" si ni argsproperty ni argskey ne sont définis
|
|
],
|
|
"argsproperty" => [null, null, "comme argsname mais force l'utilisation d'une propriété"],
|
|
"argskey" => [null, null, "comme argsname mais force l'utilisation d'une clé"],
|
|
"autohelp" => ["?bool", null, "faut-il ajouter automatiquement le support de l'option --help"],
|
|
"autoremains" => ["?bool", null, "faut-il ajouter automatiquement la prise en compte des arguments restants"],
|
|
];
|
|
|
|
const SECTION_SCHEMA = [
|
|
"show" => ["bool", true, "faut-il afficher cette section?"],
|
|
"title" => [null, null, "titre de la section"],
|
|
"prefix" => [null, null, "texte à afficher avant l'aide générée automatiquement"],
|
|
"suffix" => [null, null, "texte à afficher après l'aide générée automatiquement"],
|
|
|
|
# ces valeurs sont calculées
|
|
"defs" => [null, null, "(interne) liste des définitions de cette section"],
|
|
];
|
|
|
|
const DEF_SCHEMA = [
|
|
"set_defaults" => [null, null, "tableau contenant des paramètres par défaut"],
|
|
"merge_arrays" => [null, null, "liste de tableaux à merger à celui-ci"],
|
|
"merge" => [null, null, "tableau à merger à celui-ci",
|
|
# si merge_arrays et merge sont spécifiés tous les deux, "merge" est mergé après "merge_arrays"
|
|
],
|
|
"kind" => [null, null, "type de définition: 'option' ou 'command'"],
|
|
"arg" => [null, null, "type de l'argument attendu par l'option"],
|
|
"args" => [null, null, "type des arguments attendus par l'option",
|
|
# si args est spécifié, arg est ignoré
|
|
],
|
|
"argsdesc" => [null, null, "description textuelle des arguments, utilisé pour l'affichage de l'aide"],
|
|
"type" => [null, null, "types dans lesquels convertir les arguments avant de les fournir à l'utilisateur"],
|
|
"action" => [null, null, "fonction à appeler quand cette option est utilisée",
|
|
# la signature de la fonction est ($value, $name, $arg, $dest, $def)
|
|
],
|
|
"name" => [null, null, "propriété ou clé à initialiser en réponse à l'utilisation de cette option",
|
|
"desc" => "le nom à spécifier est au format under_score, qui est transformée en camelCase si la destination est un objet",
|
|
],
|
|
"property" => [null, null, "comme name mais force l'utilisation d'une propriété"],
|
|
"key" => [null, null, "comme name mais force l'utilisation d'une clé"],
|
|
"inverse" => ["bool", false, "décrémenter la destination au lieu de l'incrémenter pour une option sans argument"],
|
|
"value" => ["mixed", null, "valeur à forcer au lieu d'incrémenter la destination"],
|
|
"ensure_array" => [null, null, "forcer la destination à être un tableau"],
|
|
"help" => [null, null, "description de cette option, utilisé pour l'affichage de l'aide"],
|
|
"cmd_args" => [null, null, "définition des sous-options pour une commande"],
|
|
|
|
# ces valeurs sont calculées
|
|
"cmd_defs" => [null, null, "(interne) liste des définitions correspondant au paramètre options"],
|
|
];
|
|
|
|
const ARGS_ALLOWED_VALUES = ["value", "path", "dir", "file", "host"];
|
|
}
|