from todotxt import TODOFile, DATE_FMT, todo_from_line if __name__ == "__main__": # todo.sh usage: if len(sys.argv) > 1 and sys.argv[1] == "usage": print("USAGE: ...") sys.exit() parser = argparse.ArgumentParser(description="todotxt 'ADD' script") parser.add_argument("--dir", default=os.environ.get("TODO_DIR", "."), help="Directory to look for todo.txt files") parser.add_argument("-f", dest="fnpat", default="todo.txt", help="filename prefix to save to") parser.add_argument("text", nargs=argparse.REMAINDER, help="text of new todo") opts = parser.parse_args() if opts.fnpat.endswith(".txt"): wildcard = "" else: wildcard = "*.txt" fnl = glob(os.path.join(opts.dir, "{}{}".format(opts.fnpat, wildcard))) if len(fnl) > 1: print("Too many matches for -f: {}".format(", ".join(fnl))) sys.exit(1) todo_file = TODOFile(fnl[0]) t = todo_from_line(" ".join(opts.text)) t.set_created_now() todo_file.add_todo(t) todo_file.save()
help="Directory to look for todo.txt files") opts = parser.parse_args() print("Archiving in {}".format(opts.dir)) todo_files = glob(opts.dir + "/*.txt") done_file = TODOFile(os.path.join(opts.dir, "done.txt")) for fn in todo_files: bfn = os.path.basename(fn) if bfn == "done.txt": continue f = TODOFile(fn) print("{:<18}: ".format(bfn), end="") archived = 0 to_delete = [] for todo in f.get_todos(): if not todo.done: continue done_file.add_todo(todo) to_delete.append(todo) archived += 1 for deltodo in to_delete: f.delete_todo(deltodo) try: done_file.save() f.save() except: print("error saving.") sys.exit(1) print("archived {} todos.".format(archived))