/todo

a simplistic todo cli written in Bash, using SQLite.

Primary LanguageShellGNU General Public License v3.0GPL-3.0

todo

a simplistic todo cli written in Bash, using SQLite.

Features

  • Errors out properly if sqlite3 command is unavailable.
  • Add a New task (-n), creation timestamp automatically stored.
  • Mark a task as Completed (-c), completion timestamp automatically stored.
  • Delete a task (-d).
  • Display valid tasks by default (no args).
  • Display All tasks (-a), valid and completed ones.
  • Ability to choose SQLite database location via a simple ~/.todorc
  • Ability to tweak SQLite output via ~/.todosqliterc
  • Use classic, or FTS3 SQL and database format if available.
  • Use older database format if already existing.
  • Exit if a newer and unsupported database file format is present.
  • Ability to Search valid tasks (-s) by word.
  • Ability to Search valid and completed tasks (-S) by word.
  • Ability to mark as Unfinished (-u) a task previously marked as completed.
  • Enhanced display. (better could probably be found. Tailored for 132col terminal)
  • Man page.
  • database path customization at first launch
  • RPM Packaging.
  • DumP (-p) and imporT (-t, with a default backup before import, -T, without) of database in SQL format.
  • Backup (-b) and Restore (-r) of database in binary format.
  • Ability to move (-m) database to another directory, updates .todorc accordingly.
  • Ability to move (-M) database to another potentially non-existing directory, updates .todorc accordingly.
  • Ability to update (-e) database path if another database already exists.
  • Ability to update (-E) database path if another database already exists, and erase previous database file if possible.

Todo (no pun intented)

  • DEB Packaging.
  • Would it be better to keep global variables way of bash (tododb, sqliteopts, actualsqlmode, sqlmode), or declare it as local and pass it as arguments to be really clean ?

Won’t implement

  • Allow a category personnal/job for each todo entry. NOPE (too much changes (hint: add a keyword or something in task description.))

Known bugs

  • None known right now.

todo SQL database is very simple:

info table (single entry)
sqlmode (text not null)
creation (date as text not null)
todoversion (text not null)
sqliteversion (text not null)
todo table (one line per entry)
title (text not null)
creation (date as text not null)
completed (date as text)

date is date +"%Y-%m-%d %R:%S" formatted

rowid is automatically defined by SQLite.