From 031f9768dec78b166a13d65df131cdf2b32fb6cc Mon Sep 17 00:00:00 2001 From: "max (maauer)" Date: Thu, 31 Jan 2019 09:31:47 -0500 Subject: [PATCH] A configuration setting to use relative symbolic links Edit the copy function in utils.py to take the parameter rellink and if it is true, create links relative to the source directory. Modify gallery.py and __init__.py to pass along this parameter. Add rel_link flag to setting.py --- sigal/__init__.py | 2 +- sigal/gallery.py | 2 +- sigal/settings.py | 1 + sigal/utils.py | 7 +++++-- 4 files changed, 8 insertions(+), 4 deletions(-) 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):