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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user