]> git.plutz.net Git - shellwiki/blob - moinimport.sh
Merge commit '6bc502434737d7f08379e79b94fc6fda424ef779'
[shellwiki] / moinimport.sh
1 #!/bin/sh
2
3 while [ "$#" -gt 0 ]; do case "$1" in
4   --exec) _EXEC="$2"; shift 2;;
5   --data) _DATA="$2"; shift 2;;
6   *) moin="$1"; shift 1;;
7 esac; done
8
9 REQUEST_METHOD=import
10 . "${_EXEC:-${0%/*}}/cgilite/cgilite.sh"
11
12 reformat() {
13   sed -E '
14     s;\r;;g;
15     s;^## ;%rem ;
16     s;<<BR>>;\&nbsp\;  \n;g
17
18     s;'\'\'\'';**;g; s;'\'\'';*;g;
19
20     s;^====== (.+) ======$;\n###### \1;g
21     s;^===== (.+) =====$;\n##### \1;g
22     s;^==== (.+) ====$;\n#### \1;g
23     s;^=== (.+) ===$;\n### \1;g
24     s;^== (.+) ==$;\n## \1;g
25     s;^= (.+) =$;\n# \1;g
26
27     s;^----+$;\n&;
28
29     s;\{\{attachment:([^}|]*)\|([^}|]*)\|([^}|]*)\}\};![\2](\1 "\3");g
30     s;\{\{attachment:([^}|]*)\|([^}|]*)\}\};![\2](\1);g
31     s;\{\{attachment:([^}|]*)\}\};![](\1);g
32     s;\[\[([^]|]*)\|([^]|]*)\|([^]|]*)\]\];[\2](\1);g
33     s;\[\[([^]|]*)\|([^]|]*)\]\];[\2](\1);g
34
35     /\{\{\{+#!wiki/{
36       s;\{;:;g;
37       s;:#!wiki (.*)$;: {\1};
38       s;^;\n;
39     }
40     /^\}\}\}+$/s;\};:;g;
41
42     :MACRO
43     s;<<([^\(>]+)\(([^,)]+),?([^)]*)\)>>;<<\1 "\2"(\3)>>;g;
44     tMACRO
45     s;<<([^\(>]+)\(\)>>;<<\1>>;g;
46   '
47 }
48
49 find "$moin" -maxdepth 1 -printf '%P\n' \
50 | while read mpage; do
51   [ -f "${moin}/${mpage}/current" ] || continue
52   read revision <"${moin}/${mpage}/current"
53   
54   page="$(printf %s\\n "$mpage" |sed -r '
55     :A
56     s;\(([0-9a-f][0-9a-f])(([0-9a-f]{2})+)\);%\1(\2);g
57     s;\(([0-9a-f][0-9a-f])\);%\1;g
58     tA
59   ')"
60   page="$(HEX_DECODE % "$page" |PATH)"
61
62   mkdir -vp -- "${_DATA}/pages/${page}"
63   reformat <"${moin}/${mpage}/revisions/${revision}" >"${_DATA}/pages/${page}/#page.md"
64
65   [ -d "${moin}/${mpage}/attachments" ] \
66   && cp -vrfT -- "${moin}/${mpage}/attachments" "${_DATA}/pages/${page}/#attachments"
67 done