a simplistic todo cli written in Bash, using SQLite.
- 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.
- 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 ?
- Allow a category personnal/job for each todo entry. NOPE (too much changes (hint: add a keyword or something in task description.))
- 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.