mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-11 06:09:17 +00:00
remove error reported by logger for #268
This commit is contained in:
@@ -154,7 +154,7 @@ def cmd_install(o):
|
|||||||
if tmp:
|
if tmp:
|
||||||
tmp = os.path.join(o.dotpath, tmp)
|
tmp = os.path.join(o.dotpath, tmp)
|
||||||
if os.path.exists(tmp):
|
if os.path.exists(tmp):
|
||||||
remove(tmp)
|
remove(tmp, LOG)
|
||||||
if r:
|
if r:
|
||||||
# dotfile was installed
|
# dotfile was installed
|
||||||
if not o.install_temporary:
|
if not o.install_temporary:
|
||||||
@@ -287,7 +287,7 @@ def cmd_compare(o, tmp):
|
|||||||
if tmpsrc:
|
if tmpsrc:
|
||||||
tmpsrc = os.path.join(o.dotpath, tmpsrc)
|
tmpsrc = os.path.join(o.dotpath, tmpsrc)
|
||||||
if os.path.exists(tmpsrc):
|
if os.path.exists(tmpsrc):
|
||||||
remove(tmpsrc)
|
remove(tmpsrc, LOG)
|
||||||
|
|
||||||
# print diff result
|
# print diff result
|
||||||
if diff == '':
|
if diff == '':
|
||||||
@@ -584,11 +584,7 @@ def cmd_remove(o):
|
|||||||
|
|
||||||
# remove dotfile from dotpath
|
# remove dotfile from dotpath
|
||||||
dtpath = os.path.join(o.dotpath, dotfile.src)
|
dtpath = os.path.join(o.dotpath, dotfile.src)
|
||||||
try:
|
remove(dtpath, LOG)
|
||||||
remove(dtpath)
|
|
||||||
except OSError:
|
|
||||||
# did not exist
|
|
||||||
pass
|
|
||||||
# remove empty directory
|
# remove empty directory
|
||||||
parent = os.path.dirname(dtpath)
|
parent = os.path.dirname(dtpath)
|
||||||
# remove any empty parent up to dotpath
|
# remove any empty parent up to dotpath
|
||||||
@@ -597,7 +593,7 @@ def cmd_remove(o):
|
|||||||
msg = 'Remove empty dir \"{}\"'.format(parent)
|
msg = 'Remove empty dir \"{}\"'.format(parent)
|
||||||
if o.safe and not LOG.ask(msg):
|
if o.safe and not LOG.ask(msg):
|
||||||
break
|
break
|
||||||
remove(parent)
|
remove(parent, LOG)
|
||||||
parent = os.path.dirname(parent)
|
parent = os.path.dirname(parent)
|
||||||
removed.append(dotfile.key)
|
removed.append(dotfile.key)
|
||||||
|
|
||||||
@@ -669,7 +665,7 @@ def apply_trans(dotpath, dotfile, templater, debug=False):
|
|||||||
msg = 'transformation \"{}\" failed for {}'
|
msg = 'transformation \"{}\" failed for {}'
|
||||||
LOG.err(msg.format(trans.key, dotfile.key))
|
LOG.err(msg.format(trans.key, dotfile.key))
|
||||||
if new_src and os.path.exists(new_src):
|
if new_src and os.path.exists(new_src):
|
||||||
remove(new_src)
|
remove(new_src, LOG)
|
||||||
return None
|
return None
|
||||||
return new_src
|
return new_src
|
||||||
|
|
||||||
@@ -728,7 +724,7 @@ def main():
|
|||||||
tmp = get_tmpdir()
|
tmp = get_tmpdir()
|
||||||
ret = cmd_compare(o, tmp)
|
ret = cmd_compare(o, tmp)
|
||||||
# clean tmp directory
|
# clean tmp directory
|
||||||
remove(tmp)
|
remove(tmp, LOG)
|
||||||
|
|
||||||
elif o.cmd_import:
|
elif o.cmd_import:
|
||||||
# import dotfile(s)
|
# import dotfile(s)
|
||||||
|
|||||||
@@ -537,7 +537,7 @@ class Installer:
|
|||||||
diff = utils.diff(modified=src, original=dst, raw=False,
|
diff = utils.diff(modified=src, original=dst, raw=False,
|
||||||
diff_cmd=self.diff_cmd)
|
diff_cmd=self.diff_cmd)
|
||||||
if tmp:
|
if tmp:
|
||||||
utils.remove(tmp, quiet=True)
|
utils.remove(tmp, logger=self.log)
|
||||||
|
|
||||||
if not quiet and diff:
|
if not quiet and diff:
|
||||||
self._print_diff(src, dst, diff)
|
self._print_diff(src, dst, diff)
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class Updater:
|
|||||||
ret = self._handle_file(new_path, dtpath)
|
ret = self._handle_file(new_path, dtpath)
|
||||||
# clean temporary files
|
# clean temporary files
|
||||||
if new_path != path and os.path.exists(new_path):
|
if new_path != path and os.path.exists(new_path):
|
||||||
remove(new_path)
|
remove(new_path, logger=self.log)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def _apply_trans_w(self, path, dotfile):
|
def _apply_trans_w(self, path, dotfile):
|
||||||
@@ -133,7 +133,7 @@ class Updater:
|
|||||||
msg = 'transformation \"{}\" failed for {}'
|
msg = 'transformation \"{}\" failed for {}'
|
||||||
self.log.err(msg.format(trans.key, dotfile.key))
|
self.log.err(msg.format(trans.key, dotfile.key))
|
||||||
if os.path.exists(tmp):
|
if os.path.exists(tmp):
|
||||||
remove(tmp)
|
remove(tmp, logger=self.log)
|
||||||
return None
|
return None
|
||||||
return tmp
|
return tmp
|
||||||
|
|
||||||
@@ -273,7 +273,7 @@ class Updater:
|
|||||||
self.log.dbg('rm -r {}'.format(old))
|
self.log.dbg('rm -r {}'.format(old))
|
||||||
if not self._confirm_rm_r(old):
|
if not self._confirm_rm_r(old):
|
||||||
continue
|
continue
|
||||||
remove(old)
|
remove(old, logger=self.log)
|
||||||
self.log.sub('\"{}\" dir removed'.format(old))
|
self.log.sub('\"{}\" dir removed'.format(old))
|
||||||
|
|
||||||
# handle files diff
|
# handle files diff
|
||||||
@@ -326,7 +326,7 @@ class Updater:
|
|||||||
continue
|
continue
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('rm {}'.format(new))
|
self.log.dbg('rm {}'.format(new))
|
||||||
remove(new)
|
remove(new, logger=self.log)
|
||||||
self.log.sub('\"{}\" removed'.format(new))
|
self.log.sub('\"{}\" removed'.format(new))
|
||||||
|
|
||||||
# compare rights
|
# compare rights
|
||||||
|
|||||||
@@ -103,28 +103,42 @@ def get_unique_tmp_name():
|
|||||||
return os.path.join(tempfile.gettempdir(), unique)
|
return os.path.join(tempfile.gettempdir(), unique)
|
||||||
|
|
||||||
|
|
||||||
def remove(path, quiet=False):
|
def remove(path, logger=None):
|
||||||
"""remove a file/directory/symlink"""
|
"""
|
||||||
|
remove a file/directory/symlink
|
||||||
|
if logger is defined, OSError are catched
|
||||||
|
and printed to logger.warn instead of being forwarded
|
||||||
|
as OSError
|
||||||
|
"""
|
||||||
if not path:
|
if not path:
|
||||||
return
|
return
|
||||||
if not os.path.lexists(path):
|
if not os.path.lexists(path):
|
||||||
if quiet:
|
err = 'File not found: {}'.format(path)
|
||||||
|
if logger:
|
||||||
|
logger.warn(err)
|
||||||
return
|
return
|
||||||
raise OSError("File not found: {}".format(path))
|
raise OSError(err)
|
||||||
if os.path.normpath(os.path.expanduser(path)) in NOREMOVE:
|
if os.path.normpath(os.path.expanduser(path)) in NOREMOVE:
|
||||||
if quiet:
|
|
||||||
return
|
|
||||||
err = 'Dotdrop refuses to remove {}'.format(path)
|
err = 'Dotdrop refuses to remove {}'.format(path)
|
||||||
|
if logger:
|
||||||
|
logger.warn(err)
|
||||||
|
return
|
||||||
LOG.err(err)
|
LOG.err(err)
|
||||||
raise OSError(err)
|
raise OSError(err)
|
||||||
if os.path.islink(path) or os.path.isfile(path):
|
try:
|
||||||
os.unlink(path)
|
if os.path.islink(path) or os.path.isfile(path):
|
||||||
elif os.path.isdir(path):
|
os.unlink(path)
|
||||||
rmtree(path)
|
elif os.path.isdir(path):
|
||||||
else:
|
rmtree(path)
|
||||||
if quiet:
|
else:
|
||||||
|
err = 'Unsupported file type for deletion: {}'.format(path)
|
||||||
|
raise OSError(err)
|
||||||
|
except Exception as e:
|
||||||
|
err = str(e)
|
||||||
|
if logger:
|
||||||
|
logger.warn(err)
|
||||||
return
|
return
|
||||||
raise OSError("Unsupported file type for deletion: {}".format(path))
|
raise OSError(err)
|
||||||
|
|
||||||
|
|
||||||
def samefile(path1, path2):
|
def samefile(path1, path2):
|
||||||
|
|||||||
Reference in New Issue
Block a user