aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/SuckIt
blob: 26991b5cc77c9c35017fda9daab1cb3cf466e6d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#!/bin/bash

TIMEFORMAT="    took %lR using %P%% CPU"
time {
pushd /opt/nyaw

#rm -fr Foswiki/*
cp -r /opt/nyaw_EMPTY/Foswiki .
#rm -fr PmWiki/*
cp -r /opt/nyaw_EMPTY/PmWiki .
#rm -fr unsorted
mkdir -p unsorted
cp -r /opt/nyaw_EMPTY/unsorted .
#rm -fr users/*
mkdir -p users
cp -r /opt/nyaw_EMPTY/users .

# Copy across things like images that where uploaded.
mkdir -p /opt/nyaw/Foswiki/pub/
# TODO - Should rsync this instead.
cp -r /opt/Foswiki/pub/Main /opt/nyaw/Foswiki/pub/
filter="
 -name _default -prune -o \
 -name _empty -prune -o \
 -name System -prune -o \
 -name Trash -prune -o \
 -name TWiki -prune -o \
"
ogURL="https://fos.wiki.devuan.org"
ogWiki="Foswiki"
time find /opt/Foswiki/data  ${filter} \
-name "*.txt" -type f,l -printf "%P\n" | while read line
do
    base=`echo "${line}" | cut -d '/' -f 1`
    file=`echo "${line}" | cut -d '/' -f 2- | rev | cut -b 5- | rev`
    if [[ ! ${file} =~ (AdminGroup|AdminUser|AdminUserLeftBar|CommentPluginExamples|EditorGroup|GroupTemplate|GroupViewTemplate|NobodyGroup|PatternSkinUserViewTemplate|ProjectContributor|RegistrationAgent|SitePreferences|UnprocessedRegistrations|UnprocessedRegistrationsLog|UserHomepageHeader|UserList|UserListByDateJoined|UserListByLocation|UserList|UserListHeader|WebAtom|WebChanges|WebCreateNewTopic|WebHome|WebIndex|WebLeftBar|WebLeftBarExample|WebNotify|WebPreferences|WebRss|WebSearch|WebSearchAdvanced|WebTopicList|WikiGroups|WikiUsers)$ ]]; then
	doit='false'
	if [ ! -s ${ogWiki}/${base}/${file}.HTM ]; then
	    echo "NEW   /opt/Foswiki/data/${base}/${file}.txt"
	    doit='true'
	elif [ /opt/Foswiki/data/${base}/${file}.txt -nt ${ogWiki}/${base}/${file}.HTM ]; then
	    echo "NEWER /opt/Foswiki/data/${base}/${file}.txt"
	    date --rfc-3339=seconds -ur /opt/Foswiki/data/${base}/${file}.txt
	    date --rfc-3339=seconds -ur ${ogWiki}/${base}/${file}.HTM
	    doit='true'
	fi
	if [[ ${doit} == "true" ]]; then
	    realURL=${ogWiki}/${base}/${file}
	    time=`date --rfc-3339=seconds -ur /opt/Foswiki/data/${base}/${file}.txt | cut -d '+' -f 1`
	    mkdir -p ${ogWiki}/${base}
	    mkdir -p ${ogWiki}/${base}/`dirname ${file}`
	    echo -e "ogWiki=${ogWiki}\nogURL=${ogURL}\nrealURL=${realURL}\nogBase=${base}\nogFile=${file}\ntimestamp=${time}\n" > ${ogWiki}/${base}/${file}.md.md
	    echo "downloading ${ogURL}/${base}/${file}?cover=print"
	    # Doesn't help with redownloads, coz natch a dynamic site isn't cached.  But I can at least comment out the curl command during testing to save time.
	    curl --silent --no-progress-meter ${ogURL}/${base}/${file}?cover=print -o ${ogWiki}/${base}/${file}.HTM
	    # Attempt to separate user profiles from user content.  Doesn't work when people turn their profiles into content.
	    dest=""
	    if [[ "${base}" ==  "Main" ]]; then
	        dest="unsorted"
	        if [ -L users/${file}_fos.md ]; then
		    dest='users'
		fi
		mkdir -p `dirname users/${file}`
		sed -i -E ${ogWiki}/${base}/${file}.HTM -e "s%<a href=\"/System/UserForm\">UserForm</a>%%w users/${file}_fos.SED"
		if [ -s users/${file}_fos.SED ]; then
		    dest="users"
		fi
		rm users/${file}_fos.SED >/dev/null 2>&1
		rm -d `dirname users/${file}` >/dev/null 2>&1
	    fi
	    # "Devuan" is only two pages that get sorted.  "Sandbox" is a mixture of standard examples, stuff that was copied to PmWiki, and other things that should get unsorted.
	    #						Skipping anything with "<a href="/Main/UnknownUser">UnknownUser</a></span></div>".
	    if [[ "${base}" ==  "Sandbox" ]]; then
		dest="unsorted"
		mkdir -p `dirname users/${file}`
		sed -i -E ${ogWiki}/${base}/${file}.HTM -e "s%<a href=\"/Main/UnknownUser\">UnknownUser</a></span></div>%%w users/${file}_fos.SED"
		if [ -s users/${file}_fos.SED ]; then
		    dest=""
		fi
		rm users/${file}_fos.SED >/dev/null 2>&1
		rm -d `dirname users/${file}` >/dev/null 2>&1
	    fi

	    if [[ "${dest}" != "" ]]; then
		mkdir -p `dirname ${dest}/${file}`
		realURL=${dest}/${file}
		echo -e "ogWiki=${ogWiki}\nogURL=${ogURL}\nrealURL=${realURL}_fos\nogBase=${base}\nogFile=${file}\ntimestamp=${time}\n" > ${ogWiki}/${base}/${file}.md.md
		touch   ${ogWiki}/${base}/${file}.md
		ln -sfr ${ogWiki}/${base}/${file}.md ${dest}/${file}_fos.md
		ln -sfr ${ogWiki}/${base}/${file}.md.md ${dest}/${file}_fos.md.md
		rm      ${ogWiki}/${base}/${file}.md
	    fi
	fi
    fi
done


# Copy across things like images that where uploaded.
cp -r /opt/pmwiki/uploads /opt/nyaw/PmWiki/
filter="
 -not -name "*~" -a \
 -not -name ".flock" -a \
 -not -name ".htaccess" -a \
 -not -name ".lastmod" -a \
 -not -name ".pageindex" -a \
"
ogURL="https://wiki.devuan.org"
ogWiki="PmWiki"
time find /opt/pmwiki/wiki.d  ${filter} \
-name "*.*" -type f,l -printf "%P\n" | while read line
do
    base=`echo "${line}" | cut -d '.' -f 1`
    file=`echo "${line}" | cut -d '.' -f 2`
    if [[ "${base}" !=  "Site" ]]; then
	doit='false'
	if [ ! -s ${ogWiki}/${base}/${file}.HTM ]; then
	    echo "NEW   /opt/pmwiki/wiki.d/${base}.${file}   ${ogWiki}/${base}/${file}.HTM"
	    doit='true'
	elif [ /opt/pmwiki/wiki.d/${base}.${file} -nt ${ogWiki}/${base}/${file}.HTM ]; then
	    echo "NEWER /opt/pmwiki/wiki.d/${base}.${file}"
	    date --rfc-3339=seconds -ur /opt/pmwiki/wiki.d/${base}.${file}
	    date --rfc-3339=seconds -ur ${ogWiki}/${base}/${file}.HTM
	    doit='true'
	fi
	if [[ ${doit} == "true" ]]; then
	    realURL=${ogWiki}/${base}/${file}
	    time=`date --rfc-3339=seconds -ur /opt/pmwiki/wiki.d/${base}.${file} | cut -d '+' -f 1`
	    mkdir -p ${ogWiki}/${base}
	    echo -e "ogWiki=${ogWiki}\nogURL=${ogURL}\nrealURL=${realURL}\nogBase=${base}\nogFile=${file}\ntimestamp=${time}\n" > ${ogWiki}/${base}/${file}.md.md
#	    echo "downloading ${ogURL}/?n=${base}.${file}?action=markdown"
#	    curl --no-progress-meter ${ogURL}/?n=${base}.${file}?action=markdown -o ${ogWiki}/${base}/${file}.MARKDOWN
	    echo "downloading ${ogURL}/?n=${base}.${file}?action=print"
	    curl --no-progress-meter ${ogURL}/?n=${base}.${file}?action=print -o ${ogWiki}/${base}/${file}.HTM
	    # Seems there's no way to tell user profiles apart from user content.  Unless I can find a list of users somewhere.  Don't think there is one.
	    if [[ "${base}" ==  "Profiles" ]]; then
		dest="unsorted"
		if [ -L users/${file}_pm.md ]; then
		    dest='users'
		fi
		realURL=${dest}/${file}
		echo -e "ogWiki=${ogWiki}\nogURL=${ogURL}\nrealURL=${realURL}_pm\nogBase=${base}\nogFile=${file}\ntimestamp=${time}\n" > ${ogWiki}/${base}/${file}.md.md
		touch   ${ogWiki}/${base}/${file}.md
		ln -sfr ${ogWiki}/${base}/${file}.md ${dest}/${file}_pm.md
		ln -sfr ${ogWiki}/${base}/${file}.md.md ${dest}/${file}_pm.md.md
		rm      ${ogWiki}/${base}/${file}.md
	    fi
	fi

# TODO - groups are PmWiki/Onefang and PmWiki/Tiki

#    	pandoc -f markdown -t commonmark_x --self-contained ${ogWiki}//${base}/${file}.MD >${ogWiki}/${base}/${file}.md
#    	pandoc -f html -t commonmark_x --self-contained ${ogWiki}//${base}/${file}.HTM >${ogWiki}/${base}/${file}.md
    fi
done


time notYetAnotherWiki.lua

popd
}