mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-15 20:50:05 +00:00
fix bug for #182
This commit is contained in:
@@ -10,7 +10,6 @@ import errno
|
|||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from dotdrop.logger import Logger
|
from dotdrop.logger import Logger
|
||||||
from dotdrop.comparator import Comparator
|
|
||||||
from dotdrop.templategen import Templategen
|
from dotdrop.templategen import Templategen
|
||||||
import dotdrop.utils as utils
|
import dotdrop.utils as utils
|
||||||
|
|
||||||
@@ -275,7 +274,8 @@ class Installer:
|
|||||||
content = templater.generate(src)
|
content = templater.generate(src)
|
||||||
templater.restore_vars(saved)
|
templater.restore_vars(saved)
|
||||||
if noempty and utils.content_empty(content):
|
if noempty and utils.content_empty(content):
|
||||||
self.log.dbg('ignoring empty template: {}'.format(src))
|
if self.debug:
|
||||||
|
self.log.dbg('ignoring empty template: {}'.format(src))
|
||||||
return False, None
|
return False, None
|
||||||
if content is None:
|
if content is None:
|
||||||
err = 'empty template {}'.format(src)
|
err = 'empty template {}'.format(src)
|
||||||
@@ -373,7 +373,7 @@ class Installer:
|
|||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('change detected for {}'.format(dst))
|
self.log.dbg('change detected for {}'.format(dst))
|
||||||
if self.showdiff:
|
if self.showdiff:
|
||||||
self._diff_before_write(src, dst)
|
self._diff_before_write(src, dst, content=content)
|
||||||
if not self.log.ask('Overwrite \"{}\"'.format(dst)):
|
if not self.log.ask('Overwrite \"{}\"'.format(dst)):
|
||||||
self.log.warn('ignoring {}'.format(dst))
|
self.log.warn('ignoring {}'.format(dst))
|
||||||
return 1, None
|
return 1, None
|
||||||
@@ -404,11 +404,15 @@ class Installer:
|
|||||||
os.chmod(dst, rights)
|
os.chmod(dst, rights)
|
||||||
return 0, None
|
return 0, None
|
||||||
|
|
||||||
def _diff_before_write(self, src, dst):
|
def _diff_before_write(self, src, dst, content=None):
|
||||||
"""diff before writing when using --showdiff - not efficient"""
|
"""diff before writing when using --showdiff - not efficient"""
|
||||||
# create tmp to diff for templates
|
tmp = None
|
||||||
comp = Comparator(debug=self.debug)
|
if content:
|
||||||
diff = comp.compare(src, dst)
|
tmp = utils.write_to_tmpfile(content)
|
||||||
|
src = tmp
|
||||||
|
diff = utils.diff(src, dst, raw=False)
|
||||||
|
utils.remove(tmp, quiet=True)
|
||||||
|
|
||||||
# fake the output for readability
|
# fake the output for readability
|
||||||
if not diff:
|
if not diff:
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -92,11 +92,15 @@ def get_unique_tmp_name():
|
|||||||
return os.path.join(tempfile.gettempdir(), unique)
|
return os.path.join(tempfile.gettempdir(), unique)
|
||||||
|
|
||||||
|
|
||||||
def remove(path):
|
def remove(path, quiet=False):
|
||||||
"""remove a file/directory/symlink"""
|
"""remove a file/directory/symlink"""
|
||||||
if not os.path.lexists(path):
|
if not os.path.lexists(path):
|
||||||
|
if quiet:
|
||||||
|
return
|
||||||
raise OSError("File not found: {}".format(path))
|
raise OSError("File not found: {}".format(path))
|
||||||
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)
|
||||||
LOG.err(err)
|
LOG.err(err)
|
||||||
raise OSError(err)
|
raise OSError(err)
|
||||||
@@ -105,6 +109,8 @@ def remove(path):
|
|||||||
elif os.path.isdir(path):
|
elif os.path.isdir(path):
|
||||||
rmtree(path)
|
rmtree(path)
|
||||||
else:
|
else:
|
||||||
|
if quiet:
|
||||||
|
return
|
||||||
raise OSError("Unsupported file type for deletion: {}".format(path))
|
raise OSError("Unsupported file type for deletion: {}".format(path))
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user