Skip to content

Commit 3fe4f21

Browse files
committed
fix(template): Cleanup symlink causes unnecessary rebuild in next build
1 parent 1aa4e7e commit 3fe4f21

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/sphinxnotes/any/template.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,22 +64,27 @@ def _on_builder_inited(cls, app:Sphinx):
6464
cls._srcdir = path.join(app.srcdir, reldir)
6565
cls._reldir = path.join('/', reldir) # abspath relatived to srcdir
6666

67-
# Cleanup possible residual symlink.
68-
if path.islink(cls._srcdir):
69-
os.unlink(cls._srcdir)
70-
if path.exists(cls._srcdir):
71-
os.remove(cls._srcdir)
72-
# Link them.
7367
ensuredir(cls._outdir)
74-
os.symlink(cls._outdir, cls._srcdir)
68+
# Link srcdir -> outdir when needed.
69+
if not path.exists(cls._srcdir):
70+
os.symlink(cls._outdir, cls._srcdir)
71+
elif not path.islink(cls._srcdir):
72+
os.remove(cls._srcdir)
73+
os.symlink(cls._outdir, cls._srcdir)
7574

7675
logger.debug(f'[any] srcdir: {cls._srcdir}')
7776
logger.debug(f'[any] outdir: {cls._outdir}')
7877

7978

8079
@classmethod
8180
def _on_build_finished(cls, app:Sphinx, exception):
82-
os.unlink(cls._srcdir)
81+
# NOTE: no need to clean up the symlink, it will cause unnecessary
82+
# rebuild because file is mssiing from Sphinx's srcdir. Logs like:
83+
#
84+
# [build target] changed 'docname' missing dependency 'xxx.jpg'
85+
#
86+
# os.unlink(cls._srcdir)
87+
pass
8388

8489

8590
def __init__(self, *args, **kwargs):

0 commit comments

Comments
 (0)