diff --git a/src/wip/cli/TODO.md b/src/wip/cli/TODO.md index 5979759..99d31e2 100644 --- a/src/wip/cli/TODO.md +++ b/src/wip/cli/TODO.md @@ -3,4 +3,35 @@ * [ ] implémenter les arguments avancés avec le préfixe "++" sur la description * [ ] pour le nombre d'arguments, supporter l'alias `*` pour `0..N` et `+` pour `1..N` + +actuellement, même si la surcharge d'option fonctionne, l'affichage de l'aide est incorrecte +* possibilité de merger *une définition d'option* +* lors de la surcharge d'une définition d'option, certaines options sont supprimées. quand toutes les options sont supprimées, la définition disparait. +* possibilité de modifier une précédente définition, notamment en rajoutant "disabled" => true pour désactiver (supprimer) la définition + * cela implique d'avoir un moyen de sélectionner une précédente définition, e.g + ~~~php + const ARGS = [ + ## exemple n°1 + ["-o", "--option"], + ["extends" => "-o", "disabled" => true], + # effet: la définition -o,--option est supprimée + + ## exemple n°2 + # étendre une précédente définition + ["-a", "--first"], + ["extends" => "-a", "extends_delete" => ["--first"], "--second"], + # résultat final: ["-a", "--second"] + + ## exemple n°3 + # créer une définition à partir d'une autre + ["merge" => ["-b", "--premier"], "merge_delete" => ["--premier"], "--deuxieme"], + # résultat final: ["-b", "--deuxieme"] + ]; + ~~~ +* pour faciliter l'implémentation de toutes ces fonctionnalités, faire une classe Option qui contient toutes les méthodes appropriées + +faire une implémentation SimpleArgsParser qui ne supporte pas les commandes, uniquement les options + +puis faire une implémentation ArgsParser qui supporte les commandes, et les options dynamiques + -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary \ No newline at end of file