URL: https://linuxfr.org/users/seraf1/journaux/auxilium-il-gere-enfin-les-sous-commandes Title: Auxilium, il gère enfin les sous-commandes ! Authors: seraf1 Date: 2025年08月22日T12:47:42+02:00 License: CC By-SA Tags: shell, posix, zsh, bash et parser Score: 6 Voici une mise à jour que j'ai eu du mal à mettre au point, surtout pour la génération de fichiers de complétion pour zsh qui ne gère pas nativement les sous-commandes. **_Mais voilà, tout fini par arriver et Auxilium gère enfin les sous-commandes !_** Mais tout d'abord, un petit rappel **Auxilium** est une bibliothèque shell POSIX complète pour le parsing d'arguments du genre de argparse pour python. **Auxilium** simplifie la création de scripts shell avec une gestion avancée des paramètres. ### Fonctionnalités clés : - Compatible POSIX (bash, zsh, dash, ksh) - Gestion des sous-commandes - Définition simple d'arguments longs et courts - Autocomplétion pour Bash et Zsh Exemple de code et résultats ### Script Bash ``` bash #!/usr/bin/bash . /usr/share/auxilium/auxilium.sh # Callback functions for subcommands start_callback() { echo "Starting service: 2ドル" } stop_callback() { echo "Stopping service" } # Initialize auxilium_init "myapp" -m "Application with subcommand support" # Add subcommands auxilium_add "start" -t subcommand -c start_callback -m "Start the service" auxilium_add "stop" -t subcommand -c stop_callback -m "Stop the service" auxilium_add "status" -t subcommand -m "Show service status" # Add common options auxilium_add "verbose" -s v -t opt -m "Enable verbose output" -S '*' auxilium_add "config" -s c -t file -d "/etc/myapp.conf" -m "Configuration file" -S '+' # Add subcommand-specific arguments auxilium_add "service_name" -t positional -S start -m "Name of service to start" auxilium_add "force" -t opt -S stop -m "Force stop" auxilium_add "log_file" -t file -S start -m "Log file path" # Parse arguments auxilium_parse ${@} # Handle subcommands case "${AUXILIUM_ARG_SUBCOMMAND}" in start) echo "Starting service: ${AUXILIUM_ARG_SERVICE_NAME}" ;; stop) echo "Stopping service" [ "${AUXILIUM_ARG_FORCE}" = "1" ] && echo "Force stop enabled" ;; status) echo "Service status: running" ;; esac auxilium_close ``` ### Lancement avec sous-commande ``` bash ≥ auxilium_test start my_service Starting service: start ``` ### Appel de l'aide principale ```bash ≥ auxilium_test --help Description: Application with subcommand support Usage: auxilium_test {start|stop|status} [-h|--help ] [--sh_completion SH_COMPLETION] [-v|--verbose ] Subcommands: start Start the service stop Stop the service status Show service status Optional Arguments: -h|--help This help message --sh_completion SH_COMPLETION Choice: bash|zsh Generate shell completion script -v|--verbose Enable verbose output ``` ### Appel de l'aide pour la sous-commande 'start' ```bash ≥ auxilium_test start --help Description: auxilium_test start - Start the service Usage: auxilium_test start [-h|--help ] [-v|--verbose ] [-c|--config CONFIG] [--log_file LOG_FILE] Optional Arguments: -h|--help This help message -v|--verbose Enable verbose output -c|--config CONFIG Default: /etc/myapp.conf Configuration file --log_file LOG_FILE Log file path Positional Arguments: SERVICE_NAME Name of service to start ``` ### Appel de l'aide pour la sous-commande 'stop' ```bash ≥ auxilium_test stop --help Description: auxilium_test stop - Stop the service Usage: auxilium_test stop [-h|--help ] [-v|--verbose ] [-c|--config CONFIG] [--force ] Optional Arguments: -h|--help This help message -v|--verbose Enable verbose output -c|--config CONFIG Default: /etc/myapp.conf Configuration file --force Force stop ``` ### Completion Bash ```bash $ bin/auxilium_test -h --sh_completion status -v --help start stop --verbose $ bin/auxilium_test stop - --force -h --help --sh_completion -v --verbose ``` ### Completion Zsh ```zsh ≥ bin/auxilium_test --help -h -- This help message --sh_completion -- Generate shell completion script start -- Start the service status -- Show service status stop -- Stop the service --verbose -v -- Enable verbose output ≥ bin/auxilium_test stop - --config -c -- Configuration file --force -- Force stop --help -h -- This help message --verbose -v -- Enable verbose output ``` Appli l'utilisant ----------- **Dispositio** ([Dépêche ici](https://linuxfr.org/news/dispositio-une-bibliotheque-shell-posix-pour-afficher-des-tables-de-donnees)) Contribution ----------- - Vous pouvez rapporter des bogues ici : https://codeberg.org/spn109/auxilium/issues - Toute aide est la bienvenue - Si vous voulez faire des paquets pour les distributions (Archlinux OK), bienvenue ! Liens ----- - Site : [https://spn109.fr/auxilium/](https://spn109.fr/auxilium/) - Sources : [https://codeberg.org/spn109/auxilium](https://codeberg.org/spn109/auxilium)

AltStyle によって変換されたページ (->オリジナル) /