#!/usr/bin/python3 # Copyright 2016 QvarnLabs Ab # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # =*= License: GPL-3+ =*= import os import shutil import subprocess import sys import tempfile import fnmatch import re def preprocess(srcdir, tgtdir): argv = [ 'ql-ikiwiki-preprocess', srcdir, tgtdir, ] subprocess.check_call(argv) def wanted(line): prefixes = ['srcdir:', 'destdir:'] for prefix in prefixes: if line.startswith(prefix): return False return True def mangle_setup(setup, tgtdir, htmldir): with open(setup) as f: text = f.read() lines = [ line for line in text.splitlines() if wanted(line) ] lines.append('srcdir: {}'.format(tgtdir)) lines.append('destdir: {}'.format(htmldir)) mangled = ''.join(line + '\n' for line in lines) with open(setup, 'w') as f: f.write(mangled) def run_ikiwiki(setup): argv = ['ikiwiki', '--setup', setup, '--gettime', '--verbose'] subprocess.check_call(argv) def run_rsync(htmldir, target): argv = ['rsync', '-av', '--delete', htmldir + '/.', target + '/.'] subprocess.check_call(argv) srcdir = sys.argv[1] rsync_target = sys.argv[2] tempdir = tempfile.mkdtemp() tgtdir = os.path.join(tempdir, 'tgt') htmldir = os.path.join(tempdir, 'html') setup = os.path.join(tgtdir, 'ikiwiki.setup') preprocess(srcdir, tgtdir) mangle_setup(setup, tgtdir, htmldir) run_ikiwiki(setup) run_rsync(htmldir, rsync_target)