Journal Auxilium, il gère enfin les sous-commandes !

Posté par (site web personnel) . Licence CC By‐SA.
Étiquettes :
6
22
août
2025

Sommaire

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

#!/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

≥ auxilium_test start my_service
Starting service: start

Appel de l'aide principale

≥ 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'

≥ 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] <SERVICE_NAME>
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'

≥ 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

$ bin/auxilium_test <TAB>
-h --sh_completion status -v 
--help start stop --verbose 
$ bin/auxilium_test stop -<TAB>
--force -h --help --sh_completion -v --verbose

Completion Zsh

≥ bin/auxilium_test <TAB>
--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 -<TAB>
--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)

Contribution

Liens

  • # lien ko

    Posté par . Évalué à 1. Dernière modification le 22 août 2025 à 13:01.

    Salut, le lien vers la dépêche Dispositio est cassé :(

    Super comme bibliothèque, faut vraiment que je me penche dessus !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.