des

Un outil nonymes de la langue française - retour accueil

git clone git://bebou.netlib.re/des

Log | Files | Refs | README |

commit bced177973afdf757d1a4b905beb5e0394bf9415
parent 0d9e7196c7db28d95269d6457f3e920367644575
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Sun,  6 Apr 2025 15:42:32 +0200

fzy devient optionnelle !

J'adore rendre les dépendances optionnelles
Aussi meilleure documentation

Diffstat:
MREADME.md | 109++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
Mdes | 30+++++++++++++++++++-----------
2 files changed, 108 insertions(+), 31 deletions(-)

diff --git a/README.md b/README.md @@ -7,36 +7,48 @@ Un outil pour consulter les synonymes d'un mot français. Obligatoirement : * Un système d'exploitation vaguement POSIX (Linux, *BSD, MacOS) - * fzy (pour le petit menu) -Optionnellement : +Optionnellement (mais plutôt recommandé) : * xclip (pour récupérer le dernier synonyme dans votre presse-papier) - * curl (pour l'éventuel téléchargement de la base de donnée en local) + * curl (pour l'éventuel téléchargement de la base de donnée en local) + * fzy (pour le petit menu interactif) -Pour installer `fzy` sur les distributions linux basée sur debian : +Pour installer les dépendances optionnelles sur les distributions linux basée +sur debian : - sudo apt install fzy + sudo apt install fzy curl xclip Sous MacOS si vous avez `brew` : - brew install fzy + brew install fzy curl xclip ## Usage - $ des +Une fois cette première configuration vous devrez relancer l'outil. Il vous +demandera un mot : + + Mot : -Au premier lancement le script vous demandera si vous souhaitez utiliser -l'outil en ligne ou hors ligne. En ligne le bon fonctionnement de la commande -dépendra d'une conneion internet et du statut du serveur `bebou.netlib.re`. -Hors-ligne nécessitera de télécharger 6Mo de données sur votre ordinateur. +Vous pouvez le taper puis appuyer sur "entrée". -Une fois cette première configuration faite l'outil vous demandera un mot : +### Si vous n'avez pas `fzy` - Mot : +Si vous n'avez pas `fzy` une liste statique des synonymes et de leurs scores de +proximité s'affichera : + + manger + bouffer 20 + dévorer 19 + engloutir 14 + [...] + +Si vous avez `xclip` le synonyme qui sera dans votre presse-papier sera le +premier de la liste. + +### Si vous avez `fzy` -Vous pouvez le taper puis appuyer sur "entrée". Une liste des synonymes et -leurs scores de proximité s'affichera : +Une liste dynamique des synonymes et de leurs scores de proximité s'affichera : manger > @@ -45,13 +57,70 @@ leurs scores de proximité s'affichera : engloutir 14 [...] -Vous pouvez parcourir le menu avec les flèches haut/bas ou en tapant lesynonyme -de votre choix. +Vous pouvez parcourir le menu avec les flèches haut/bas ou en tapant le synonyme +de votre choix. En appuyant sur entrée une nouvelle recherche sera faite avec le +synonyme couramment sélectionné. Vous pouvez sortir de l'outil en appuyant sur +echap ou en cherchant un synonyme n'existant pas puis en appuyant sur entrée. +Si vous avez `xclip` le dernier synonyme cherché sera dans votre presse-papier. +## Installation +Pour installer le script il faut le lancer une première fois pour qu'il +s'auto-configure : -## Installation + $ des + +Le script vous demandera si vous souhaitez utiliser l'outil en ligne ou hors +ligne. En ligne le bon fonctionnement de la commande dépendra d'une conneion +internet et du statut du serveur `bebou.netlib.re`. Hors-ligne nécessitera de +télécharger 4Mo de données sur votre ordinateur. + +Vous pouvez ensuite le copier dans un dossier existant dans votre `PATH` ou +faire un alias qui l'appelle. Par exemple, sous Debian : + + sudo cp des /usr/local/bin/ + +Attention, si vous avez sélectionné un usage hors-ligne le script se sera +auto-configuré pour chercher les données dans le fichier `sysnonymes.tsv` qu'il +aura téléchargé dans ce dossier. Si vous déplacez ce fichier tsv le script ne +fonctionnera plus. Pour ajuster son comportement voir Modifications. + +## Modifications + +### Passer d'un mode hors-ligne à en ligne + +Vous pouvez faire passer l'outil d'un hors-ligne à en ligne en modifiant la +variable `mode` pour qu'elle prenne la valeur `offline` : + + mode=offline + +### Passer d'un mode en ligne à hors-ligne + +Vous devez d'abord télécharger la base de donnée sous le nom `synonymes.tsv`. +Par exemple avec `curl` : + + $ curl -Ls http://arthur.bebou.netlib.re/crisco-des/data > synonymes.tsv + +Vous pouvez ensuite faire passer l'outil d'un hors-ligne à en ligne en modifiant +la variable `mode` pour qu'elle prenne la valeur `offline` : + + mode=online + +et la variable `path` pour qu'elle prenne la valeur du chemin qui vers le +fichier tsv : + + path=/chemin/vers/sysnonymes.tsv + +En supposant que vous soyez dans le dossier dans lequel le fichier se trouve ce +chemin peut être récupéré en faisant : + + $ realpath synonymes.tsv + /chemin/vers/synonymes.tsv + +## Remerciements -Pour installer le script vous pouvez le copier dans un dossier existant dans -votre `PATH` ou +Merci à mes deux ami·es m'ayant suggéré la création et la pertinence de ce petit +outil. Merci à Victor avec qui j'ai discuté de la forme de cet outil, notamment +comment rendre son installation plus aisée. Merci aux personnes de PPP ayant +trouvé ça cool :) diff --git a/des b/des @@ -2,12 +2,6 @@ set -e -red="\033[91m"; norm="\033[0m" -if ! command -V fzy > /dev/null ;then - printf "${red}Il manque la commande fzy. Voir le README$norm\n" - exit 1 -fi - clip() { command -V xclip > /dev/null && printf "$oldmot" | xclip -selection clipboard } @@ -17,7 +11,17 @@ trap "clip" EXIT TERM INT QUIT if grep -q "^# TOREMOVE$" "$0";then printf "Voulez vous utiliser cet outil en ligne ou hors ligne ?\n" printf "Pour voir les avantages et désavantages de chaque mode lisez le README :)\n" - mode=$(printf "En ligne\nHors ligne\nquitter\n" | fzy) + if command -V fzy > /dev/null ;then + mode=$(printf "En ligne\nHors ligne\nquitter\n" | fzy) + else + printf "En ligne - 1\nHors ligne - 2\nquitter - 3\n" + read answer + case "$answer" in + 1) mode="En ligne";; + 2) mode="Hors ligne";; + *) mode=;; + esac + fi case $mode in ('En ligne') mode="online";; ('Hors ligne') @@ -47,9 +51,13 @@ do else line=$(grep "^$mot " "$path" | cut -f2- | tr '; ' ' \n') fi - mot=$(echo "$line" | - column -ts' ' | - fzy -l 50 | - sed -E 's, *[0-9]+,,') + mot=$(echo "$line" | column -ts' ') + if command -V fzy > /dev/null ;then + mot=$(echo "$mot" | fzy -l 50 | sed -E 's, *[0-9]+,,') + else + echo "$mot" + oldmot=$(echo "$mot" | head -n1 | sed -E 's, *[0-9]+,,') + exit 0 + fi done