From 5760be32e4d4fdbcbfdad40fbf9d27a60d95abca Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Thu, 16 Nov 2023 07:20:27 +0400 Subject: [PATCH] ajout nlman --- bash/src/base.args.sh | 2 +- bin/nlman | 58 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100755 bin/nlman diff --git a/bash/src/base.args.sh b/bash/src/base.args.sh index 5638082..c0b16fb 100644 --- a/bash/src/base.args.sh +++ b/bash/src/base.args.sh @@ -83,7 +83,7 @@ action * 'NAME=VALUE' pour une option sans argument, forcer la valeur spécifiée; pour une option avec argument, prendre la valeur spécifiée comme valeur par défaut si la valeur de l'option est vide - * '$CMD' CMD est évalué avec eval *dès* que l'option est rencontrée. + * '\$CMD' CMD est évalué avec eval *dès* que l'option est rencontrée. les valeurs suivantes sont initialisées: * option_ est l'option utilisée, e.g --long-opt * value_ est la valeur de l'option diff --git a/bin/nlman b/bin/nlman new file mode 100755 index 0000000..e260fac --- /dev/null +++ b/bin/nlman @@ -0,0 +1,58 @@ +#!/bin/bash +# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8 +NULIB_NO_IMPORT_DEFAULTS=1 +source "$(dirname -- "$0")/../load.sh" || exit 1 + +LIST_FUNCS= +SHOW_FUNCS=() +function nulib__define_functions() { + function nulib_check_loaded() { + local module + for module in "${NULIB_LOADED_MODULES[@]}"; do + [ "$module" == "$1" ] && return 0 + done + return 1 + } + function module:() { + if [ -n "$LIST_FUNCS" ]; then + esection "$1" + fi + NULIB_MODULE="$1" + if ! nulib_check_loaded "$1"; then + NULIB_LOADED_MODULES+=("$1") + fi + } + function function:() { + if [ -n "$LIST_FUNCS" ]; then + estep "$1" + else + local func + for func in "${SHOW_FUNCS[@]}"; do + if [ "$func" == "$1" ]; then + esection "$1" + eecho "$2" + fi + done + fi + } +} +require: DEFAULTS + +modules=() +args=( + "afficher l'aide d'une fonction nulib" + #"usage" + -m:,--module: modules "charger des modules supplémentaires" + -l,--list LIST_FUNCS=1 "lister les fonctions pour lesquelles une aide existe" +) +parse_args "$@"; set -- "${args[@]}" + +for func in "$@"; do + SHOW_FUNCS+=("$func") +done + +NULIB_LOADED_MODULES=(nulib) +require: DEFAULTS +for module in "${modules[@]}"; do + require: "$module" +done