docs: def init(self):
          """init `todo` file
          if file exists, then initialization self.todos
          and record current max index of todos
          : when add a new todo, the `idx` via only `self.current_max_idx + 1`
          """
          if os.path.isdir(self.path):
              raise InvalidTodoFile
          if os.path.exists(self.path):
              with open(self.path, 'r') as f:
                  tls = [tl.strip() for tl in f if tl]
                  todos = map(_todo_from_file, tls)
                  self.todos = todos
                  for todo in todos:
                      if self.current_max_idx < todo['idx']:
                          self.current_max_idx = todo['idx']
          else:
              logger.warning('No todo files found, initialization a empty todo file')
              with open(self.path, 'w') as f:
                  f.flush()