[reflector-bash-completion] tiny speedup; allow show8ng reflector error code

This commit is contained in:
manuel
2024-07-21 09:43:46 +03:00
parent b99910e6ec
commit 50f216841b
2 changed files with 32 additions and 11 deletions
+2 -2
View File
@@ -2,7 +2,7 @@
pkgname=reflector-bash-completion
pkgdesc="Bash completion support for 'reflector'"
pkgver=1.2
pkgver=24
pkgrel=1
arch=('any')
license=('GPL')
@@ -14,7 +14,7 @@ _url="https://raw.githubusercontent.com/endeavouros-team/PKGBUILDS/master/$pkgna
source=(
$_url/$pkgname
)
sha512sums=('7c588c70b34420593bc06b04b2ac2e1e206166716d89b1d6057a410dfc8c19e81f5004156f7493a8bd3a51028fde27c5198fcc6876ce211e2aa426ca1f6c4d81')
sha512sums=('3e6fc3ebd28ef43fde99daf120e7db419ed381fba15888096d962834f6d72d4d5d158dc9012fff67656251b5cfa667ce00e8c2a34afefe463c45b4b64fe6bd9d')
package() {
install -Dm644 $pkgname $pkgdir/usr/share/bash-completion/completions/reflector
@@ -19,18 +19,17 @@ _reflector_complete_threads() {
}
_reflector_complete_countries() {
local folder=$HOME/.config/reflector-complete
local countrylist=$folder/countrylist
local date=$(date +%Y%V) # updates countrylist weekly
local -r file=$folder/countrylist.$(/bin/date +%Y%V) # update countrylist weekly
local country_names
mkdir -p $folder
if [ -r $countrylist.$date ] ; then
country_names="$(cat $countrylist.$date)"
if [ -r $file ] ; then
country_names="$(< $file)"
else
rm -f $countrylist.*
country_names="$(/bin/reflector --list-countries 2>/dev/null | /bin/sed -n '/^-----/,//'p | /bin/sed -e '1d' -e 's|^\(.*[a-z]\)[ ]*[A-Z][A-Z].*$|\1|')"
echo "$country_names" > $countrylist.$date
rm -f ${file%.*}.*
country_names=$(/bin/reflector --list-countries) || return 1
country_names=$(echo "$country_names" | /bin/sed -e '1,2d' -e 's|^\(.*[a-z]\)[ ]*[A-Z][A-Z].*$|\1|')
echo "$country_names" > $file
fi
local IFS=$'\n'
@@ -39,6 +38,26 @@ _reflector_complete_countries() {
compopt -o filenames
}
_reflector_complete_mirrors() {
local -r file=$folder/mirrors.$date
mkdir -p $folder
if [ -r $file ] ; then
local mirrors=$(< $file)
else
local -r timeout=30
local -r url="https://archlinux.org/mirrorlist/?protocol=https&ip_version=4&use_mirror_status=on"
local mirrors=$(curl --fail -Lsm $timeout "$url" | grep "^#Server = " | awk '{print $NF}')
[ "$mirrors" ] || exit 1
echo "$mirrors" > $file
fi
mirrors=$(fzf -m < $file)
local IFS=$'\n'
COMPREPLY=( $(compgen -W "$mirrors" -- "$cur") )
compopt -o nosort
#compopt -o filenames
}
_reflector_options() {
local opts=(
--help -h
@@ -76,6 +95,8 @@ _reflector_()
local cur prev #words cword split
_init_completion -s || return
local -r folder=$HOME/.config/reflector-complete
# Handle options that need sub-options.
# Each option "case" should return immediately.
@@ -95,7 +116,7 @@ _reflector_()
--delay) _reflector_complete ;;
--save) _filedir ;;
--url) ;;
--include | -i | --exclude | -x) ;;
--include | -i | --exclude | -x) ;; #_reflector_complete_mirrors ;;
*)
# Handle all top-level parameters.