From a0f2ffa0cfcd6af037a89472d4339414604eb029 Mon Sep 17 00:00:00 2001 From: "Arnaud G. GIBERT" Date: Sat, 20 Jun 2026 17:57:17 +0200 Subject: [PATCH] - Improve Bash completion to suggest meta-packages after -i or --install options. --- ReadMe.txt | 2 +- ReleaseNotes.txt | 10 +++++-- SPECS/mpm.spec | 5 +++- etc/bash_completion.d/mpm | 62 ++++++++++++++++++--------------------- sbin/mpm | 8 +++-- 5 files changed, 47 insertions(+), 40 deletions(-) diff --git a/ReadMe.txt b/ReadMe.txt index 1ac89ec..eb5e04e 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,4 +1,4 @@ -Welcome to MPM: Meta Package Manager 1.0.x ! +Welcome to MPM: Meta Package Manager 1.1.x ! diff --git a/ReleaseNotes.txt b/ReleaseNotes.txt index 490cd57..9d1f01c 100644 --- a/ReleaseNotes.txt +++ b/ReleaseNotes.txt @@ -1,3 +1,11 @@ +------------------------------------------------------------------------------------------------------------------------------------ +MPM V 1.1.3 - A. GIBERT - 2026/06/20 +------------------------------------------------------------------------------------------------------------------------------------ + +- Improve Bash completion to suggest meta-packages after -i or --install options. + + + ------------------------------------------------------------------------------------------------------------------------------------ MPM V 1.1.2 - A. GIBERT - 2026/05/03 ------------------------------------------------------------------------------------------------------------------------------------ @@ -32,5 +40,3 @@ MPM V 1.0.0 - A. GIBERT - 2024/10/04 ------------------------------------------------------------------------------------------------------------------------------------ - Initial release: help, list & install commands implemented. - - diff --git a/SPECS/mpm.spec b/SPECS/mpm.spec index dc1d48c..5cf4ee6 100644 --- a/SPECS/mpm.spec +++ b/SPECS/mpm.spec @@ -24,7 +24,7 @@ %define name mpm -%define version 1.1.2 +%define version 1.1.3 %define release %mkrel 1rx3 %global debug_package %{nil} @@ -160,6 +160,9 @@ done #----------------------------------------------------------------------------------------------------------------------------------- %changelog +* Sat Jun 20 2026 Arnaud G. GIBERT - 1.1.3-1rx3.mga9 +- Update to 1.1.3 + * Sun May 3 2026 Arnaud G. GIBERT - 1.1.2-1rx3.mga9 - Update to 1.1.2 diff --git a/etc/bash_completion.d/mpm b/etc/bash_completion.d/mpm index 3a284c9..14d07d0 100644 --- a/etc/bash_completion.d/mpm +++ b/etc/bash_completion.d/mpm @@ -28,46 +28,42 @@ _mpm_completion() { - local cur="${COMP_WORDS[COMP_CWORD]}" - local prev="${COMP_WORDS[COMP_CWORD-1]}" - local opts="-h --help -V --version -v --verbose -T --test -l --list -i --install -r --repo" + local mode_opts="-h --help -V --version -l --list -i --install" + local glob_opts="-T --test -v --verbose -r --repo" + local cur="${COMP_WORDS[COMP_CWORD]}" + local prev="${COMP_WORDS[COMP_CWORD-1]}" - local pos=0 - local i + local mode_set="FALSE" + local repo="" + local i COMPREPLY=() - # Count non-option positional arguments already provided + # Scan already provided words to detect mode and repo override for (( i=1; i/dev/null | awk 'NR>2 { gsub(/^ +/, "", $1); print $1 }')" + else + mpm_names="$(mpm --list 2>/dev/null | awk 'NR>2 { gsub(/^ +/, "", $1); print $1 }')" + fi + COMPREPLY=( $(compgen -W "${mpm_names}" -- "${cur}") ) return 0 ;; @@ -77,15 +73,13 @@ _mpm_completion() ;; esac - # Complete positional arguments - case "${pos}" in - 0) - COMPREPLY=( $(compgen -W "-h --help -V --version -v --verbose -T --test -l --list -i --install -r --repo" -- "${cur}") ) - ;; - *) - COMPREPLY=() - ;; - esac + # Build candidate list depending on whether a mode is already set + if [[ "${mode_set}" == "TRUE" ]] + then + COMPREPLY=( $(compgen -W "${glob_opts}" -- "${cur}") ) + else + COMPREPLY=( $(compgen -W "${mode_opts} ${glob_opts}" -- "${cur}") ) + fi return 0 } diff --git a/sbin/mpm b/sbin/mpm index eac6f6c..23a2b75 100755 --- a/sbin/mpm +++ b/sbin/mpm @@ -39,7 +39,7 @@ # Global Variables #----------------------------------------------------------------------------------------------------------------------------------- -declare -g VERSION="1.1.2" +declare -g VERSION="1.1.3" declare -g NAME="mpm" declare -g HELP="usage: [-h | --help] | [-V | --version] | [-l | --list] | [-i | --install ] [-T | --test] [-v | --verbose] [-r | --repo ]" @@ -118,7 +118,7 @@ mpm_args_parse() # End of options --) shift; break;; - *) echo_error "args_parse internal error [$1]!"; exit 1;; + *) echo_error "args_parse internal error [$1]!"; exit 1;; esac done @@ -164,6 +164,7 @@ mpm_mpkg_tag_read() local mpkg="$1" local tag="$2" + if [[ "${MPM_REPO}" =~ ^https?:// ]] then cmd_exec curl -L "${MPM_REPO}/${mpkg}.mpm" 2>/dev/null | grep -e "${tag}: " | sed -e "s/^${tag}: //" @@ -184,6 +185,7 @@ mpm_mpkg_desc() { local mpkg="$1" + mpm_mpkg_tag_read "${mpkg}" "PKG_DESC" } @@ -199,6 +201,7 @@ mpm_mpkg_pkglist() { local mpkg="$1" + mpm_mpkg_tag_read "${mpkg}" "PKG_LIST" } @@ -216,6 +219,7 @@ mpm_list() local desc local pkglist + echo " MPM Name | MPM Description | Package List " echo "---------------------+----------------------------------+---------------------------------------------------------------------------"