Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
Répondre

pacman-desc

#1Messageil y a 9 ans

nous sommes dimanche et le codeur du dimanche est réveillé

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
Répondre