En allant chercher des niews sur aur et les packages je suis tombé sur l'api de aur et donc du coup je suis aussi tombé dans le code
Retourner la description d'un package non installé sur la machine
un petit script qui refait la même chose que
yaourt -Ss ^pacman$
mais en + il a la particularité de recherche dans les dépots arch et dans aur
Seul il est un peut tristounet mais il peut-être un bon outil d'information couplé avec pacman -Qm ou avec l'option -f
pacman-desc -n $(pacman -Qoq "mail")
s-nail Mail processing system with a command syntax reminiscent of ed
pacman-desc -n $(pacman -Qmq | grep "octo")
octopi(aur) a powerful Pacman frontend using Qt libs
pacman-desc -fn usermod
shadow Password and account management tool suite with support for shadow files and PAM
pacman-desc -n firefox-developer-fr
firefox-developer-fr(aur) Standalone web browser from mozilla.org, developer build - French
pacman-desc -fn /etc/fstab /etc/lsb-release
filesystem Base filesystem
lsb-release LSB version query program
ou une commande qui tue (très très lente !) mais c'est bon :
pacman-desc -n $(pacman -Qdtq)
pacman-desc -n $(pacman -Qmq)
le code de pacman-desc :
#!/usr/bin/bash
##package description via arch repos or aur
version='0.2.0'
declare -Ar infos=(
['d']='pkgdesc'
['d aur']='Description'
['n']='pkgname'
['n aur']='name'
['v']='pkgver'
['v aur']='Version'
['u']='url'
['u aur']='URL'
)
## search in arch
## as pacman -Ss ^pacman$ | tail -n 1
function search_arch() {
local package=$1
local title=$2
local field=$3
[ -z "$field" ] && field=${infos['d']}
url="https://www.archlinux.org/packages/search/json/?name=$package"
json=$(curl -s "$url")
error=$(echo "$json" | grep -i 'results": \[\]' )
if [ -z "$error" ]; then
description=$(echo "$json" | grep -Pio "\"$field\":.*?[^\\\\]\"," | head -n 1 | cut -d'"' -f4)
[ "$field" == "url" ] && description=${description//\\/}
[ "$title" == 1 ] && echo -en "\033[1m$package\033[0m\t"
echo "$description"
return 0
else
#echo "Warning: not in archlinux repo" >&2
return 44 #404
fi
}
## new aur search
## pacsearch -Ss ^octopi$ ??
function search_aur() {
local package=$1
local title=$2
local field=$3
[ -z "$field" ] && field=${infos['d aur']}
url="https://aur.archlinux.org/rpc.php?type=info&arg=$package"
json=$(curl -s -A "Mozilla/5.0 (X11; Linux x86_64)" "$url")
error=$(echo "$json" | grep -io 'type":"error')
count=$(echo "$json" | grep -io 'resultcount":0')
if [ -z "$error" ] && [ -z "$count" ]; then
description=$(echo "$json" | grep -Pio "\"$field\":\".*?[^\\\\]\"," | head -n 1 | cut -d'"' -f4)
[ "$field" == "URL" ] && description=${description//\\/}
[ "$title" == 1 ] && echo -en "\033[1m$package(aur)\033[0m\t"
echo "$description"
else
#echo "Error: $json" >&2
return 128
fi
}
function help() {
local prog=${BASH_SOURCE[0]}
echo -e "Usage : pacman-desc [-fn] package-name-[list]
-n :\t add column name package
-f :\t use file name[list] not package[list]
-v :\t return package version
-u :\t return url\n
\t${prog##*/} version: $version" >&2
exit 2
}
function main(){
title=0
usefile=0
package=''
param='d'
while getopts "vudfn" option
do
case $option in
n) title=1 ;;
f) usefile=1 ;;
v) param='v';;
u) param='u';;
d) param='d';;
esac
done
shift $((OPTIND-1))
[ "$#" -eq 0 ] && help
for package in "$@"; do
[ "$usefile" -eq 1 ] && package=$(pacman -Qoq "$package")
package=${package,,}
[ -z "$package" ] && help
search_arch "$package" "$title" ${infos["$param"]}
ret="$?"
[ "$ret" == 0 ] || search_aur "$package" "$title" ${infos["$param aur"]}
done
}
if [ "${BASH_SOURCE[0]}" != "$0" ]; then
export -f search_arch
export -f search_aur
else
main "${@}"
exit 0
fi
##### changelog #####
## 0.2
# bold name package
# add -u
# add -v