From: Paul Hänsch Date: Thu, 7 Mar 2024 16:37:42 +0000 (+0100) Subject: helper script for importing pages from moinmoin X-Git-Url: https://git.plutz.net/?p=shellwiki;a=commitdiff_plain;h=c8ae1b0cff2ffa4e5c995d4fdfc788b7efcaa757 helper script for importing pages from moinmoin --- diff --git a/moinimport.sh b/moinimport.sh new file mode 100755 index 0000000..b747843 --- /dev/null +++ b/moinimport.sh @@ -0,0 +1,67 @@ +#!/bin/sh + +while [ "$#" -gt 0 ]; do case "$1" in + --exec) _EXEC="$2"; shift 2;; + --data) _DATA="$2"; shift 2;; + *) moin="$1"; shift 1;; +esac; done + +REQUEST_METHOD=import +. "${_EXEC:-${0%/*}}/cgilite/cgilite.sh" + +reformat() { + sed -E ' + s;\r;;g; + s;^## ;%rem ; + s;<
>;\ \; \n;g + + s;'\'\'\'';**;g; s;'\'\'';*;g; + + s;^====== (.+) ======$;\n###### \1;g + s;^===== (.+) =====$;\n##### \1;g + s;^==== (.+) ====$;\n#### \1;g + s;^=== (.+) ===$;\n### \1;g + s;^== (.+) ==$;\n## \1;g + s;^= (.+) =$;\n# \1;g + + s;^----+$;\n&; + + s;\{\{attachment:(.*)\|(.*)\|(.*)\}\};![\2](\1 "\3");g + s;\{\{attachment:(.*)\|(.*)\}\};![\2](\1);g + s;\{\{attachment:(.*)\}\};![](\1);g + s;\[\[(.*)\|(.*)\|(.*)\]\];[\2](\1);g + s;\[\[(.*)\|(.*)\]\];[\2](\1);g + + /\{\{\{+#!wiki/{ + s;\{;:;g; + s;:#!wiki (.*)$;: {\1}; + s;^;\n; + } + /^\}\}\}+$/s;\};:;g; + + :MACRO + s;<<([^\(>]+)\(([^,)]+)([^)]*)\)>>;<<\1 "\2"(\3)>>;g; + tMACRO + s;<<([^\(>]+)\(\)>>;<<\1>>;g; + ' +} + +find "$moin" -maxdepth 1 -printf '%P\n' \ +| while read mpage; do + [ -f "${moin}/${mpage}/current" ] || continue + read revision <"${moin}/${mpage}/current" + + page="$(printf %s\\n "$mpage" |sed -r ' + :A + s;\(([0-9a-f][0-9a-f])(([0-9a-f]{2})+)\);%\1(\2);g + s;\(([0-9a-f][0-9a-f])\);%\1;g + tA + ')" + page="$(HEX_DECODE % "$page" |PATH)" + + mkdir -vp -- "${_DATA}/pages/${page}" + reformat <"${moin}/${mpage}/revisions/${revision}" >"${_DATA}/pages/${page}/#page.md" + + [ -d "${moin}/${mpage}/attachments" ] \ + && cp -vrfT -- "${moin}/${mpage}/attachments" "${_DATA}/pages/${page}/#attachments" +done