#!/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 rm -fr users mkdir -p 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 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. if [[ "${base}" == "Main" ]]; then dest="unsorted" mkdir -p `dirname users/${file}` sed -i -E ${ogWiki}/${base}/${file}.HTM -e "s%UserForm%%w users/${file}_fos.SED" if [ -s users/${file}_fos.SED ]; then dest="users" fi rm users/${file}_fos.SED rm -d `dirname users/${file}` >/dev/null 2>&1 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 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 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" 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 # 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 }