- Improve Bash completion to suggest meta-packages after -i or --install options.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
Welcome to MPM: Meta Package Manager 1.0.x !
|
||||
Welcome to MPM: Meta Package Manager 1.1.x !
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
|
||||
@@ -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 <arnaud@rx3.net> - 1.1.3-1rx3.mga9
|
||||
- Update to 1.1.3
|
||||
|
||||
* Sun May 3 2026 Arnaud G. GIBERT <arnaud@rx3.net> - 1.1.2-1rx3.mga9
|
||||
- Update to 1.1.2
|
||||
|
||||
|
||||
@@ -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<COMP_CWORD; i++ ))
|
||||
do
|
||||
case "${COMP_WORDS[i]}" in
|
||||
-h|--help|-V|--version|-v|--verbose|-T|--test|-l|--list)
|
||||
-h|--help|-V|--version|-l|--list|-i|--install)
|
||||
mode_set="TRUE"
|
||||
;;
|
||||
-i|--install|-r|--repo)
|
||||
i=$(( i + 1 ))
|
||||
;;
|
||||
--)
|
||||
;;
|
||||
-*)
|
||||
;;
|
||||
*)
|
||||
pos=$(( pos + 1 ))
|
||||
-r|--repo)
|
||||
repo="${COMP_WORDS[i+1]}"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Complete options if current word starts with '-'
|
||||
if [[ "${cur}" == -* ]]
|
||||
then
|
||||
COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Complete based on previous option
|
||||
# Complete the argument of -i / --install with the live package list
|
||||
case "${prev}" in
|
||||
-i|--install)
|
||||
local mpm_names
|
||||
mpm_names="$(mpm --list 2>/dev/null | awk 'NR>2 { gsub(/^ +/, "", $1); print $1 }')"
|
||||
|
||||
if [[ "${repo}" != "" ]]
|
||||
then
|
||||
mpm_names="$(mpm -r "${repo}" --list 2>/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
|
||||
}
|
||||
|
||||
8
sbin/mpm
8
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 <mpm_name>] [-T | --test] [-v | --verbose] [-r | --repo <repository_url>]"
|
||||
|
||||
@@ -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 "---------------------+----------------------------------+---------------------------------------------------------------------------"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user