]> gitweb.pimeys.fr Git - scripts-20-100.git/commitdiff
[cadre.sh] Pour faire rapidement un joli cadre ASCII
authorVincent Le Gallic <legallic@crans.org>
Sun, 29 Sep 2013 01:44:37 +0000 (03:44 +0200)
committerVincent Le Gallic <legallic@crans.org>
Sun, 29 Sep 2013 01:44:37 +0000 (03:44 +0200)
cadre.sh [new file with mode: 0755]

diff --git a/cadre.sh b/cadre.sh
new file mode 100755 (executable)
index 0000000..55851a2
--- /dev/null
+++ b/cadre.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# Génère un cadre de ce type :
+
+#################################################################
+##            Suite des paramètres passés au script            ##
+#################################################################
+
+# Variable à changer pour modifier la taille du cadre obtenu
+boxsize=65
+bordersize=2
+
+commentchar="#"
+fillerchar=" "
+
+text=$*
+
+# Génération de plusieurs caractères
+function gen_chars
+{
+    local i
+
+    OUT=""
+
+    for ((i = "$2"; i>0; i--)); do
+        OUT="${OUT}$1"
+    done
+}
+
+textsize=${#text}
+
+lenspaces=$((boxsize - textsize - 2*bordersize))
+
+if [[ ${lenspaces} -lt 0 ]];
+then
+  echo "Texte trop grand pour le cadre"
+  exit 1
+fi
+
+leftspaces=$((lenspaces/2))
+
+if [[ $((${lenspaces} % 2)) -eq 0 ]];
+then
+  rightspaces=$((lenspaces/2))
+else
+  rightspaces=$((lenspaces/2 + 1))
+fi
+
+# Première ligne de #
+gen_chars "${commentchar}" ${boxsize}
+echo "${OUT}"
+# Frontière gauche
+gen_chars "${commentchar}" ${bordersize}
+echo -n "${OUT}"
+# Filler gauche
+gen_chars "${fillerchar}" ${leftspaces}
+echo -n "${OUT}"
+# Texte central
+echo -n "${text}"
+# Filler droit
+gen_chars "${fillerchar}" ${rightspaces}
+echo -n "${OUT}"
+# Frontière droite
+gen_chars "${commentchar}" ${bordersize}
+echo "${OUT}"
+# Deuxième ligne de #
+gen_chars "${commentchar}" ${boxsize}
+echo "${OUT}"