commit:     51b5d26d5fddcffc9f89a4e5256c457182bf47c8
Author:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 11 03:11:28 2019 +0000
Commit:     Thomas Deutschmann <whissi <AT> gentoo <DOT> org>
CommitDate: Mon Mar 11 04:56:25 2019 +0000
URL:        https://gitweb.gentoo.org/proj/eselect-rust.git/commit/?id=51b5d26d

find_targets(): sort by version

Signed-off-by: Thomas Deutschmann <whissi <AT> gentoo.org>

 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[@]}"
 }
 

Reply via email to