From 51b5d26d5fddcffc9f89a4e5256c457182bf47c8 Mon Sep 17 00:00:00 2001 From: Thomas Deutschmann Date: Mon, 11 Mar 2019 04:11:28 +0100 Subject: find_targets(): sort by version Signed-off-by: Thomas Deutschmann --- rust.eselect.in | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/rust.eselect.in b/rust.eselect.in index 0ecf87a..311d8c0 100644 --- a/rust.eselect.in +++ b/rust.eselect.in @@ -38,12 +38,32 @@ find_missing_broken_symlinks() { # in "${ENV_D_PATH}/rust" directory # this function prints list of $pkgname-$pkgver values find_targets() { - local f + local f fn local -a providers + local -a providers_unsorted + local -a providers_sorted for f in "${ENV_D_PATH}"/rust/provider-*; do [[ -f ${f} ]] || continue - providers=("${providers[@]}" "${f##*/provider-}") + fn="${f##*/provider-}" + if [[ "${fn}" == rust-bin-* ]]; then + providers_unsorted+=( "${fn##rust-bin-}-mysortA" ) + elif [[ "${fn}" == rust-* ]]; then + providers_unsorted+=( "${fn##rust-}-mysortZ" ) + else + die -q "Unsupported rust provider file '${f}' found." + fi + done + + IFS=$'\n' LC_COLLATE=C providers_sorted=( $(sort <<<"${providers_unsorted[*]}") ) + + for fn in "${providers_sorted[@]}"; do + if [[ "${fn}" == *-mysortA ]]; then + providers+=( "rust-bin-${fn%%-mysortA}" ) + else + providers+=( "rust-${fn%%-mysortZ}" ) + fi done + echo "${providers[@]}" } -- cgit v1.2.3-65-gdbad