One-liner again
Je voulais pouvoir récupérer la liste complète des ports outdated de FreeBSD, pour ça nous disposons de portscout mais ce dernier ne présente que la liste par mainteneur, or je voulais la liste complète... mais portscout propose un flux rss qui, si il est appelé sans le paramètre ?m=, liste tous les ports outdated (attention le fichier est gros).
J'ai donc pris quelques armes :
- ZSH
- textproc/xmlstarlet pour faire des requête dans le xml
- textproc/html2text pour un peu de cosmétique dans la sortie
- fetch
le résultat :
feed=(${(f)"$(fetch -q -o - http://portscout.org/rss/rss.cgi)"}) && for item ({1..$(xml sel -t -v "count(//item)" =( print -lr $feed))}) { xml sel -t -v //item[$item]/title =( print -lr $feed) | html2text } > portscout.txt
avec cette ligne je récupère un fichier portscout.txt donc le contenu est :
categorie/port: ancienne_version -> nouvelle_version
tout simplement
UPDATE :
Voici une version plus zshienne (plus besoin de xmlstarlet ni de html2text) en revanche elle est moins souple mais plus rapide :
feed=(${(f)"$(fetch -q -o - http://portscout.org/rss/rss.cgi)"}) && for item ({0..$#feed}) { [[ -z ${feed[$item]:#\<item\>*} ]] && { print ${${${${feed[$item + 1]}/>/>}/\<\/title\>/}/\<title\>} } } > portscout.txt


