rw

générer un bouton aléatoire pour un site - retour accueil

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

Log | Files | Refs | README |

rw (1468B)


      1 #! /bin/sh
      2 
      3 tmpd="$(mktemp -d)"
      4 trap "rm -rf $tmpd" EXIT INT QUIT
      5 
      6 usage() {
      7 <<-. cat
      8 	Générer une sorte de bouton aléatoire pour un site
      9 
     10 	Usage : rw [-h] -d dossier [-t texte]
     11 
     12 	    * -d : le chemin du dossier contenant le site (obligatoire)
     13 	    * -t : le texte à afficher pour les liens (facultatif)
     14 		       par défaut : ❓🤔❓🤔❓🤔❓🤔❓🤔
     15 
     16 	Exemples :
     17 
     18 	rw -h                    # Afficher ce texte
     19 	rw -d public             # générer le "bouton" pour le site dans le dossier public
     20 	rw -d public -t blabla   # générer le "bouton" pour le site dans le dossier public avec "blabla" comme lien
     21 .
     22 }
     23 
     24 while getopts "hd:t:" opt; do
     25 	case $opt in
     26 		( d )     d="$OPTARG" ;;
     27 		( t )     t="$OPTARG" ;;
     28 		( h )     usage; exit ;;
     29 		( * )     echo "Option inconnue"; usage; exit 1;;
     30   esac
     31 done
     32 
     33 [ -z "$d" ] && { echo "Chemin vers le dossier obligatoire" >&2; exit 1; }
     34 
     35 find "$d" -name '*.html' -type f | sed -E 's,[^/]*/,,' > "$tmpd/files"
     36 [ ! -s "$tmpd/files" ] && exit 0
     37 
     38 nb="$(< "$tmpd/files" wc -l)"
     39 
     40 < /dev/urandom tr -dc '0-9\n' |
     41 	grep -oE '[0-5]..' |
     42 	head -n"$(( $nb * 2))" |
     43 	paste - - > "$tmpd/random"
     44 
     45 size="$(echo "2500/$nb" | bc)"
     46 [ "$size" -lt "10" ] && size=10
     47 [ "$size" -gt "50" ] && size=50
     48 
     49 paste "$tmpd/files" "$tmpd/random" |
     50 	tr '\t\n' '\0' |
     51 	xargs -0 printf "<a href='/%s' style='position: absolute; font-size: $size; left:%s; top: %s; text-decoration: none'>${t:-'❓🤔❓🤔❓🤔❓🤔❓🤔'}</a>\n" |
     52 	shuf
     53