summaryrefslogtreecommitdiff
path: root/bin/vimki
diff options
context:
space:
mode:
authorMarc Vertes <mvertes@free.fr>2025-01-21 08:42:15 +0100
committerMarc Vertes <mvertes@free.fr>2025-01-21 08:42:15 +0100
commit0ad4e2b969c28d2b39d29e55e53ae632db710030 (patch)
tree62bb292d8da9a835becb679b5d6917c50da3d950 /bin/vimki
parentbac7296bb38bb46b51e4fd70c5fe234f2a58d553 (diff)
parent6d506e0b30569c547f41f6d6334a1b5133774da4 (diff)
Merge github.com:mvertes/dotfiles
Diffstat (limited to 'bin/vimki')
-rwxr-xr-xbin/vimki56
1 files changed, 56 insertions, 0 deletions
diff --git a/bin/vimki b/bin/vimki
new file mode 100755
index 0000000..e3e0f4d
--- /dev/null
+++ b/bin/vimki
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# Batch operations on vimki
+
+# rename changes the link name and propagates the change in the wiki
+rename1() {
+ [ "$(head -c 8 "$3")" = VimCrypt ] && return
+ gawk -v old="$1" -v new="$2" -v IGNORECASE=1 '
+ {
+ gsub("[[]" old "[]]", "[" new "]")
+ print
+ }
+ ' "$3" > "$3.$$" && mv "$3.$$" "$3"
+}
+
+link2rx() {
+ gawk -v rx="$1" -v IGNORECASE=1 '
+ BEGIN {
+ gsub(/_/, "\\W+", rx)
+ gsub(/a/, "[aåäáàâã]", rx)
+ gsub(/c/, "[cç]", rx)
+ gsub(/e/, "[eéèêë]", rx)
+ gsub(/i/, "[iîíìï]", rx)
+ gsub(/o/, "[oôöóõò]", rx)
+ gsub(/u/, "[uùûüú]", rx)
+ gsub(/y/, "[yÿ]", rx)
+ gsub(/n/, "[nñ]", rx)
+ print rx
+ }'
+}
+
+#shellcheck disable=SC2020
+
+linkfile() {
+ echo "$1" |
+ tr '[:upper:]' '[:lower:]' |
+ tr 'åäáàâãçéèêëîíìïôöóõòùûüúÿñ' 'aaaaaaceeeeiiiiooooouuuuyn' |
+ awk '{gsub(/\W+/, "_"); print}'
+}
+
+rename() {
+ rx=$(link2rx "$1")
+ # Parallelize renaming
+ echo *.md | xargs -n 1 -P 8 "$0" rename1 "$rx" "$2"
+ oldf="$(linkfile "$1").md"
+ [ -f "$oldf" ] && mv "$oldf" "$(linkfile "$2").md"
+}
+
+fixfiles() {
+ for f in *; do
+ mv "$f" "$(linkfile "$f")"
+ done
+}
+
+cd ~/Wiki || exit
+"$@"