diff --git a/sigal/__init__.py b/sigal/__init__.py index 500456c..f233a30 100644 --- a/sigal/__init__.py +++ b/sigal/__init__.py @@ -153,7 +153,7 @@ def build(source, destination, debug, verbose, force, config, theme, title, src = os.path.join(settings['source'], src) dst = os.path.join(settings['destination'], dst) logger.debug('Copy %s to %s', src, dst) - copy(src, dst, symlink=settings['orig_link']) + copy(src, dst, symlink=settings['orig_link'], rellink=settings['rel_link']) stats = gal.stats diff --git a/sigal/gallery.py b/sigal/gallery.py index 9dc96df..424bd5d 100644 --- a/sigal/gallery.py +++ b/sigal/gallery.py @@ -113,7 +113,7 @@ class Media: check_or_create_dir(orig_path) big_path = join(orig_path, self.src_filename) if not isfile(big_path): - copy(self.src_path, big_path, symlink=s['orig_link']) + copy(self.src_path, big_path, symlink=s['orig_link'], rellink=['rel_link']) return join(s['orig_dir'], self.src_filename) @property diff --git a/sigal/settings.py b/sigal/settings.py index 58b12be..8110d30 100644 --- a/sigal/settings.py +++ b/sigal/settings.py @@ -55,6 +55,7 @@ _DEFAULT_CONFIG = { 'mp4_options': ['-crf', '23', '-strict', '-2'], 'orig_dir': 'original', 'orig_link': False, + 'rel_link': False, 'output_filename': 'index.html', 'piwik': {'tracker_url': '', 'site_id': 0}, 'plugin_paths': [], diff --git a/sigal/utils.py b/sigal/utils.py index 05cad01..1b48192 100644 --- a/sigal/utils.py +++ b/sigal/utils.py @@ -42,12 +42,15 @@ class Devnull(object): pass -def copy(src, dst, symlink=False): +def copy(src, dst, symlink=False, rellink=False): """Copy or symlink the file.""" func = os.symlink if symlink else shutil.copy2 if symlink and os.path.lexists(dst): os.remove(dst) - func(src, dst) + if rellink: # relative symlink from dst + func(os.path.relpath(src, os.path.dirname(dst)), dst) + else: + func(src, dst) def check_or_create_dir(path):