Skip to content

Commit

Permalink
fix fake dotfiles actions not executed
Browse files Browse the repository at this point in the history
  • Loading branch information
deadc0de6 committed Nov 22, 2020
1 parent d42d810 commit 640310c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 23 deletions.
32 changes: 9 additions & 23 deletions dotdrop/dotdrop.py
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ def cmd_install(o):
if o.install_temporary:
tmpdir = get_tmpdir()

installed = 0
installed = []

# execute profile pre-action
if o.debug:
Expand All @@ -317,43 +317,29 @@ def cmd_install(o):

wait_for = []
for dotfile in dotfiles:
if not dotfile.src or not dotfile.dst:
# fake dotfile are always considered installed
if o.debug:
LOG.dbg('fake dotfile installed')
installed += 1
else:
j = ex.submit(_dotfile_install, o, dotfile, tmpdir=tmpdir)
wait_for.append(j)
j = ex.submit(_dotfile_install, o, dotfile, tmpdir=tmpdir)
wait_for.append(j)
# check result
for f in futures.as_completed(wait_for):
r, key, err = f.result()
if r:
installed += 1
installed.append(key)
elif err:
LOG.err('installing \"{}\" failed: {}'.format(key,
err))
else:
# sequentially
for dotfile in dotfiles:
if not dotfile.src or not dotfile.dst:
# fake dotfile are always considered installed
if o.debug:
LOG.dbg('fake dotfile installed')
key = dotfile.key
r = True
err = None
else:
r, key, err = _dotfile_install(o, dotfile, tmpdir=tmpdir)
r, key, err = _dotfile_install(o, dotfile, tmpdir=tmpdir)
# check result
if r:
installed += 1
installed.append(key)
elif err:
LOG.err('installing \"{}\" failed: {}'.format(key,
err))

# execute profile post-action
if installed > 0 or o.install_force_action:
if len(installed) > 0 or o.install_force_action:
if o.debug:
msg = 'run {} profile post actions'
LOG.dbg(msg.format(len(pro_post_actions)))
Expand All @@ -362,11 +348,11 @@ def cmd_install(o):
return False

if o.debug:
LOG.dbg('install done - {} installed'.format(installed))
LOG.dbg('install done: installed \"{}\"'.format(','.join(installed)))

if o.install_temporary:
LOG.log('\ninstalled to tmp \"{}\".'.format(tmpdir))
LOG.log('\n{} dotfile(s) installed.'.format(installed))
LOG.log('\n{} dotfile(s) installed.'.format(len(installed)))
return True


Expand Down
5 changes: 5 additions & 0 deletions dotdrop/installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ def install(self, templater, src, dst, linktype,
- False, error_msg : error
- False, None : ignored
"""
if not src or not dst:
# fake dotfile
self.log.dbg('fake dotfile installed')
self._exec_pre_actions(actionexec)
return True, None
if self.debug:
msg = 'installing \"{}\" to \"{}\" (link: {})'
self.log.dbg(msg.format(src, dst, str(linktype)))
Expand Down
15 changes: 15 additions & 0 deletions tests-ng/actions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,13 @@ actions:
pre:
preaction: echo 'pre' > ${tmpa}/pre
preaction2: echo 'pre2' > ${tmpa}/pre2
fake_pre: echo 'fake pre' > ${tmpa}/fake_pre
post:
postaction: echo 'post' > ${tmpa}/post
postaction2: echo 'post2' > ${tmpa}/post2
nakedaction: echo 'naked' > ${tmpa}/naked
_silentaction: echo 'silent'
fakeaction: echo 'fake' > ${tmpa}/fake
config:
backup: true
create: true
Expand All @@ -82,10 +84,17 @@ dotfiles:
- preaction2
- postaction2
- _silentaction
f_fake:
dst:
src:
actions:
- fakeaction
- fake_pre
profiles:
p1:
dotfiles:
- f_abc
- f_fake
_EOF
#cat ${cfg}

Expand All @@ -111,6 +120,12 @@ grep "executing \"echo 'naked' > ${tmpa}/naked" ${tmpa}/log >/dev/null
grep "executing \"echo 'silent'" ${tmpa}/log >/dev/null && false
grep "executing silent action \"_silentaction\"" ${tmpa}/log >/dev/null

# fake action
[ ! -e ${tmpa}/fake ] && echo 'fake post action not executed' && exit 1
grep fake ${tmpa}/fake >/dev/null
[ ! -e ${tmpa}/fake_pre ] && echo 'fake pre action not executed' && exit 1
grep 'fake pre' ${tmpa}/fake_pre >/dev/null

## CLEANING
rm -rf ${tmps} ${tmpd} ${tmpa}

Expand Down

0 comments on commit 640310c

Please sign in to comment.