1
0
mirror of https://github.com/deadc0de6/dotdrop.git synced 2026-02-11 22:59:01 +00:00

add comments and refactor

This commit is contained in:
deadc0de6
2017-03-15 21:19:59 +01:00
parent ac41ddd0e2
commit 543c8a03fb

View File

@@ -25,17 +25,15 @@ class Installer:
self.log = Logger() self.log = Logger()
def install(self, templater, profile, src, dst): def install(self, templater, profile, src, dst):
'''Install the dotfile for profile "profile"'''
src = os.path.join(self.base, os.path.expanduser(src)) src = os.path.join(self.base, os.path.expanduser(src))
dst = os.path.join(self.base, os.path.expanduser(dst)) dst = os.path.join(self.base, os.path.expanduser(dst))
if os.path.isdir(src): if os.path.isdir(src):
return self._handle_dir(templater, profile, src, dst) return self._handle_dir(templater, profile, src, dst)
return self._handle_file(templater, profile, src, dst) return self._handle_file(templater, profile, src, dst)
def _preparesub(self):
if not os.path.exists(self.sub):
os.makedirs(self.sub)
def _handle_file(self, templater, profile, src, dst): def _handle_file(self, templater, profile, src, dst):
'''Install a file using templater for "profile"'''
content = templater.generate(src, profile) content = templater.generate(src, profile)
if content is None: if content is None:
self.log.err('generate from template \"%s\"' % (src)) self.log.err('generate from template \"%s\"' % (src))
@@ -55,6 +53,7 @@ class Installer:
return [] return []
def _handle_dir(self, templater, profile, src, dst): def _handle_dir(self, templater, profile, src, dst):
'''Install a folder using templater for "profile"'''
ret = [] ret = []
for entry in os.listdir(src): for entry in os.listdir(src):
f = os.path.join(src, entry) f = os.path.join(src, entry)
@@ -69,13 +68,14 @@ class Installer:
return ret return ret
def _fake_diff(self, dst, content): def _fake_diff(self, dst, content):
'''Fake diff by comparing file content with "content"'''
cur = '' cur = ''
with open(dst, 'br') as f: with open(dst, 'br') as f:
cur = f.read() cur = f.read()
return cur == content return cur == content
def _write(self, dst, content, rights): def _write(self, dst, content, rights):
""" write file """ '''Write file'''
if self.dry: if self.dry:
self.log.dry('would install %s' % (dst)) self.log.dry('would install %s' % (dst))
return 0 return 0
@@ -97,6 +97,7 @@ class Installer:
return 0 return 0
def _create_dirs(self, folder): def _create_dirs(self, folder):
'''mkdir -p "folder"'''
if not self.create and not os.path.exists(folder): if not self.create and not os.path.exists(folder):
return False return False
if os.path.exists(folder): if os.path.exists(folder):
@@ -105,6 +106,7 @@ class Installer:
return os.path.exists(folder) return os.path.exists(folder)
def _backup(self, path): def _backup(self, path):
'''Backup the file'''
if self.dry: if self.dry:
return return
dst = path.rstrip(os.sep) + self.BACKUP_SUFFIX dst = path.rstrip(os.sep) + self.BACKUP_SUFFIX
@@ -112,6 +114,7 @@ class Installer:
os.rename(path, dst) os.rename(path, dst)
def _install_to_temp(self, templater, profile, src, dst, tmpfolder): def _install_to_temp(self, templater, profile, src, dst, tmpfolder):
'''Install a dotfile to a tempfolder for comparing'''
sub = dst sub = dst
if dst[0] == os.sep: if dst[0] == os.sep:
sub = dst[1:] sub = dst[1:]
@@ -119,6 +122,8 @@ class Installer:
return self.install(templater, profile, src, tmpdst), tmpdst return self.install(templater, profile, src, tmpdst), tmpdst
def compare(self, templater, tmpfolder, profile, src, dst): def compare(self, templater, tmpfolder, profile, src, dst):
'''Compare temporary generated dotfile with local one'''
ret = False
drysaved = self.dry drysaved = self.dry
self.dry = False self.dry = False
diffsaved = self.diff diffsaved = self.diff
@@ -128,13 +133,17 @@ class Installer:
if not os.path.exists(dst): if not os.path.exists(dst):
self.log.warn('\"%s\" does not exist on local' % (dst)) self.log.warn('\"%s\" does not exist on local' % (dst))
else: else:
ret, tmpdst = self._install_to_temp( ret, tmpdst = self._install_to_temp(templater,
templater, profile, src, dst, tmpfolder) profile,
src, dst,
tmpfolder)
if ret: if ret:
diff = utils.diff(tmpdst, dst, log=False, raw=False) diff = utils.diff(tmpdst, dst, log=False, raw=False)
if diff == '': if diff == '':
self.log.raw('same file') self.log.raw('same file')
ret = True
else: else:
self.log.emph(diff) self.log.emph(diff)
self.dry = drysaved self.dry = drysaved
self.diff = diffsaved self.diff = diffsaved
return ret