nur-sery/nur_src/ref/ref_args.php

86 lines
5.1 KiB
PHP
Raw Normal View History

2023-12-03 22:10:18 +04:00
<?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"];
}