mirror of
https://github.com/deadc0de6/dotdrop.git
synced 2026-02-15 20:50:05 +00:00
pre-action must succeed for dotfile to install (#111)
This commit is contained in:
@@ -83,7 +83,7 @@ def cmd_install(o):
|
|||||||
if not o.install_temporary and \
|
if not o.install_temporary and \
|
||||||
Cfg.key_actions_post in dotfile.actions:
|
Cfg.key_actions_post in dotfile.actions:
|
||||||
actions = dotfile.actions[Cfg.key_actions_post]
|
actions = dotfile.actions[Cfg.key_actions_post]
|
||||||
# execute action
|
# execute post action
|
||||||
for action in actions:
|
for action in actions:
|
||||||
if o.dry:
|
if o.dry:
|
||||||
LOG.dry('would execute action: {}'.format(action))
|
LOG.dry('would execute action: {}'.format(action))
|
||||||
|
|||||||
@@ -202,7 +202,8 @@ class Installer:
|
|||||||
if not self._create_dirs(base):
|
if not self._create_dirs(base):
|
||||||
self.log.err('creating directory for {}'.format(dst))
|
self.log.err('creating directory for {}'.format(dst))
|
||||||
return []
|
return []
|
||||||
self._exec_pre_actions(actions)
|
if not self._exec_pre_actions(actions):
|
||||||
|
return []
|
||||||
# re-check in case action created the file
|
# re-check in case action created the file
|
||||||
if os.path.lexists(dst):
|
if os.path.lexists(dst):
|
||||||
msg = 'Remove "{}" for link creation?'.format(dst)
|
msg = 'Remove "{}" for link creation?'.format(dst)
|
||||||
@@ -320,7 +321,8 @@ class Installer:
|
|||||||
return -1
|
return -1
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('write content to {}'.format(dst))
|
self.log.dbg('write content to {}'.format(dst))
|
||||||
self._exec_pre_actions(actions)
|
if not self._exec_pre_actions(actions):
|
||||||
|
return -1
|
||||||
# re-check in case action created the file
|
# re-check in case action created the file
|
||||||
if self.safe and not overwrite and os.path.lexists(dst):
|
if self.safe and not overwrite and os.path.lexists(dst):
|
||||||
if not self.log.ask('Overwrite \"{}\"'.format(dst)):
|
if not self.log.ask('Overwrite \"{}\"'.format(dst)):
|
||||||
@@ -388,15 +390,18 @@ class Installer:
|
|||||||
def _exec_pre_actions(self, actions):
|
def _exec_pre_actions(self, actions):
|
||||||
"""execute pre-actions if any"""
|
"""execute pre-actions if any"""
|
||||||
if self.action_executed:
|
if self.action_executed:
|
||||||
return
|
return True
|
||||||
for action in actions:
|
for action in actions:
|
||||||
if self.dry:
|
if self.dry:
|
||||||
self.log.dry('would execute action: {}'.format(action))
|
self.log.dry('would execute action: {}'.format(action))
|
||||||
else:
|
else:
|
||||||
if self.debug:
|
if self.debug:
|
||||||
self.log.dbg('executing pre action {}'.format(action))
|
self.log.dbg('executing pre action {}'.format(action))
|
||||||
action.execute()
|
if not action.execute():
|
||||||
|
self.log.err('pre-action {} failed'.format(action.key))
|
||||||
|
return False
|
||||||
self.action_executed = True
|
self.action_executed = True
|
||||||
|
return True
|
||||||
|
|
||||||
def _install_to_temp(self, templater, src, dst, tmpdir):
|
def _install_to_temp(self, templater, src, dst, tmpdir):
|
||||||
"""install a dotfile to a tempdir"""
|
"""install a dotfile to a tempdir"""
|
||||||
|
|||||||
Reference in New Issue
Block a user