Commit 9e7ebb54 authored by Bram Schoenmakers's avatar Bram Schoenmakers

Fix infinite loop with keep_sorted = 1.

When a subcommand finishes, _post_excecute() is called for sorting,
archiving and writing the file. But sorting is also a subcommand, which
in turn also calls _post_execute(), etc, etc.

So let the caller of _execute() decide when to call _post_execute.

This fixes issue #46.
parent b162e0e8
...@@ -55,6 +55,8 @@ class CLIApplication(CLIApplicationBase): ...@@ -55,6 +55,8 @@ class CLIApplication(CLIApplicationBase):
if self._execute(subcommand, args) == False: if self._execute(subcommand, args) == False:
sys.exit(1) sys.exit(1)
else:
self._post_execute()
def main(): def main():
""" Main entry point of the CLI. """ """ Main entry point of the CLI. """
......
...@@ -194,12 +194,16 @@ class CLIApplicationBase(object): ...@@ -194,12 +194,16 @@ class CLIApplicationBase(object):
self._input()) self._input())
if command.execute() != False: if command.execute() != False:
self._post_execute()
return True return True
return False return False
def _post_execute(self): def _post_execute(self):
"""
Should be called when executing the user requested command has been
completed. It will do some maintenance and write out the final result
to the todo.txt file.
"""
if self.todolist.is_dirty(): if self.todolist.is_dirty():
self._archive() self._archive()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment