From 88d6f6c2d780ced7a12bc04ebd5738781a0f8f21 Mon Sep 17 00:00:00 2001 From: perrette Date: Wed, 10 May 2023 21:21:57 +0200 Subject: [PATCH] Bugfix This should have been part of commti 4a4bb6216c5ea3628138892515f3545df84089be Issue #56 --- papers/utils.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/papers/utils.py b/papers/utils.py index e569300..b78b23c 100644 --- a/papers/utils.py +++ b/papers/utils.py @@ -83,7 +83,7 @@ def checksum(fname): # move / copy -def move(f1, f2, copy=False, interactive=True, dryrun=False, hardlink=True): +def move(f1, f2, copy=False, interactive=True, dryrun=False, hardlink=False): maybe = 'dry-run:: ' if dryrun else '' dirname = os.path.dirname(f2) if dirname and not os.path.exists(dirname): @@ -112,16 +112,25 @@ def move(f1, f2, copy=False, interactive=True, dryrun=False, hardlink=True): if copy: # If we can do a hard-link instead of copy-ing, let's do: - if hardlink: + def _hardlink(f1, f2): cmd = f'{maybe}ln {f1} {f2}' logger.info(cmd) if not dryrun: os.link(f1, f2) - else: + def _copy(f1, f2): logger.info(f'{maybe}cp {f1} {f2}') if not dryrun: shutil.copy(f1, f2) + + if hardlink: + try: + _hardlink(f1, f2) + except: + _copy(f1, f2) + else: + _copy(f1, f2) + else: cmd = f'{maybe}mv {f1} {f2}' logger.info(cmd)