From 65786931b9ad57ae59de2a1f1cb218f64d86e960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Mon, 17 Sep 2012 23:56:40 +0200 Subject: [PATCH] put media files to output dir instead of directly overwriting dokuwiki target dir --- doku.php | 12 +++++++----- moin2doku.py | 24 ++++++++++++++++-------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/doku.php b/doku.php index 7e360b9..beea79a 100755 --- a/doku.php +++ b/doku.php @@ -17,20 +17,22 @@ require_once DOKU_INC.'inc/init.php'; require_once DOKU_INC.'inc/common.php'; require_once DOKU_INC.'inc/cliopts.php'; -function strip_datadir($fn) { +function strip_dir($dir, $fn) { global $conf; - return end(explode($conf['datadir'].'/', $fn, 2)); + return end(explode($dir.'/', $fn, 2)); } + $fn = $conf['mediadir'].'/'.utf8_encodeFN($id); + switch ($argv[1]) { case 'cleanID': echo cleanID($argv[2]); break; case 'wikiFN': - echo strip_datadir(wikiFN($argv[2])); + echo strip_dir($conf['datadir'], wikiFN($argv[2])); break; -case 'mediaFn': - echo mediaFn($argv[2]); +case 'mediaFN': + echo strip_dir($conf['mediadir'], mediaFN($argv[2])); break; case 'getNS': echo getNS($argv[2]); diff --git a/moin2doku.py b/moin2doku.py index c3c7897..1dc5457 100755 --- a/moin2doku.py +++ b/moin2doku.py @@ -10,7 +10,7 @@ import sys, os, os.path, re import getopt from shutil import copyfile, copystat -from os import listdir +from os import listdir, mkdir from os.path import isdir, basename from doku import DokuWiki from moinformat import moin2doku @@ -31,6 +31,14 @@ def check_dirs(moin_pages_dir, output_dir): print >> sys.stderr, "Output directory doesn't exist!" sys.exit(1) + pagedir = os.path.join(output_dir, 'pages') + if not isdir(pagedir): + mkdir(pagedir) + + mediadir = os.path.join(output_dir, 'media') + if not isdir(mediadir): + mkdir(mediadir) + def get_path_names(moin_pages_dir, basenames = False): items = listdir(moin_pages_dir) pathnames = [] @@ -90,18 +98,18 @@ def get_current_revision(pagedir): # pagedir = MoinMoin page dir # ns = DokuWiki namespace where attachments to copy def copy_attachments(pagedir, ns): - dir = os.path.join(pagedir, 'attachments') - if not isdir(dir): + srcdir = os.path.join(pagedir, 'attachments') + if not isdir(srcdir): return - attachment_dir = dw.mediaFn(ns) + attachment_dir = os.path.join(output_dir, 'media', dw.mediaFN(ns)) if not isdir(attachment_dir): os.makedirs(attachment_dir); - attachments = listdir(dir) + attachments = listdir(srcdir) for attachment in attachments: - src = os.path.join(dir, attachment) - dst = dw.mediaFn(dw.cleanID("%s/%s" % (ns, attachment))) + src = os.path.join(srcdir, attachment) + dst = os.path.join(output_dir, 'media', dw.mediaFN(dw.cleanID("%s/%s" % (ns, attachment)))) copyfile(src, dst) copystat(src, dst) @@ -247,7 +255,7 @@ def convertfile(pagedir, overwrite = False): # content = convert_markup(pagename, content) content = moin2doku(pagename, content) - out_file = os.path.join(output_dir, dw.wikiFN(pagename)) + out_file = os.path.join(output_dir, 'pages', dw.wikiFN(pagename)) print "dokuname: [%s]" % out_file try: writefile(out_file, content, overwrite = overwrite)