project:uzzas:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
project:uzzas:start [2018/06/16 20:26] – [Source code] sachy | project:uzzas:start [2018/06/17 20:53] (current) – sachy | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== UzZas ====== | ||
+ | |||
+ | {{template>: | ||
+ | name=UzZas| | ||
+ | image=.: | ||
+ | founder=[[user: | ||
+ | interested=[[user: | ||
+ | sw=CC| | ||
+ | hw=N/A| | ||
+ | status=active}} | ||
+ | ~~META: | ||
+ | status = active | ||
+ | & | ||
+ | ~~ | ||
+ | |||
+ | UzZas is TUI based minimalistic reminder of recurring events. | ||
+ | |||
+ | Main purpose is to periodically urge the user to complete the tasks which have to be done periodically - like biweekly changing the water in home aquarium, monthly payout to local < | ||
+ | |||
+ | ==== Usage ==== | ||
+ | uzzas.sh ACTION | ||
+ | |||
+ | ACTION could be one of: | ||
+ | * **(add|-a|--add)** - Add new entry | ||
+ | * **(list|-l|--list)** - List all entries sorted by due date | ||
+ | * **(delete|-d|--delete)** - Delete entry | ||
+ | * **(today|-t|--today)** - Show entries which are planned for today | ||
+ | * **(tomorrow|-T|--tomorrow)** - Show entries which are planned for tomorrow | ||
+ | * **(ack|-A|--ack)** - Mark entry as done and activate next recurrence | ||
+ | * **(install|-i|--install)** - Install UzZas (create uzzas.db and CRON entry) | ||
+ | * **(ping|-p|--ping)** - Graphical equivalent of -t | ||
+ | * **(help|-h|--help)** - Help | ||
+ | * **(edit|-e|--edit)** - Edit entry | ||
+ | * **(clone|-c|--clone|copy|--copy)** - Clone (and modify) entry | ||
+ | |||
+ | ==== Installation ==== | ||
+ | |||
+ | - Check if the dependencies are met (bash interpreter, | ||
+ | - Download the script and make it executable "chmod +x uzzas.sh" | ||
+ | - Run " | ||
+ | |||
+ | If you will ever update/ | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -i | ||
+ | ==== UzZas installed ==== | ||
+ | See brmlab.cz/ | ||
+ | </ | ||
+ | |||
+ | ==== Adding events ==== | ||
+ | |||
+ | Run " | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -a | ||
+ | ==== Enter new task ==== | ||
+ | First time planned to (yyyy-mm-dd): | ||
+ | 2018-06-16 | ||
+ | Repeat each (days): | ||
+ | 7 | ||
+ | Item...: | ||
+ | Aquarium | ||
+ | ...containing: | ||
+ | Cutteries | ||
+ | Action/ | ||
+ | Wipe | ||
+ | ADD? (Y/n) | ||
+ | y | ||
+ | Added! | ||
+ | </ | ||
+ | |||
+ | ==== Listing events ==== | ||
+ | |||
+ | To get list of events, sorted by due-date proximity (most urgent up), run " | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -l | ||
+ | 2018-06-16 | ||
+ | 2018-06-16 | ||
+ | 2018-06-19 | ||
+ | 2018-06-23 | ||
+ | </ | ||
+ | |||
+ | To see what have to be done today, run " | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -t | ||
+ | 2018-06-16 | ||
+ | 2018-06-16 | ||
+ | </ | ||
+ | |||
+ | To see what have to be done tomorrow, run " | ||
+ | |||
+ | ==== Marking event as completed ==== | ||
+ | |||
+ | If the event is completed, it is automatically postponed to the defined reoccurence date. To do so, run " | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -A | ||
+ | Select which task is done | ||
+ | 1 | ||
+ | 6 | ||
+ | Done is: (0 = nothing; a = ALL) | ||
+ | 0 | ||
+ | Nothing done! | ||
+ | </ | ||
+ | |||
+ | ==== Deleting an event ==== | ||
+ | |||
+ | If the reoccuring event is no longer valid, run " | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -d | ||
+ | ==== Pick which action to delete (first column) ==== | ||
+ | 1 | ||
+ | 3 | ||
+ | 5 | ||
+ | 6 | ||
+ | Delete: (0 = cancel) | ||
+ | 0 | ||
+ | Not removed! | ||
+ | </ | ||
+ | |||
+ | ==== Editing event ==== | ||
+ | |||
+ | To edit existing event, run " | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -e | ||
+ | ==== Edit entry ==== | ||
+ | 1 | ||
+ | 3 | ||
+ | 5 | ||
+ | 6 | ||
+ | 7 | ||
+ | Edit: (0 = nothing) | ||
+ | 7 | ||
+ | First time planned to (yyyy-mm-dd): | ||
+ | 2018-07-16 | ||
+ | Repeat each (days): | ||
+ | 7 | ||
+ | Item...: | ||
+ | Aqua2 | ||
+ | ...containing: | ||
+ | Modry | ||
+ | Action/ | ||
+ | Wipe | ||
+ | EDIT? (Y/n) | ||
+ | |||
+ | Tasks edited! | ||
+ | </ | ||
+ | |||
+ | ==== Cloning entry ==== | ||
+ | |||
+ | To clone/copy entry, possibly with modification, | ||
+ | |||
+ | < | ||
+ | $ ./uzzas.sh -c | ||
+ | ==== Clone entry ==== | ||
+ | 1 | ||
+ | 3 | ||
+ | 5 | ||
+ | 6 | ||
+ | 7 | ||
+ | Clone: (0 = nothing) | ||
+ | 7 | ||
+ | == Edit cloned entry == | ||
+ | First time planned to (yyyy-mm-dd): | ||
+ | 2018-08-16 | ||
+ | Repeat each (days): | ||
+ | 7 | ||
+ | Item...: | ||
+ | Aqua2 | ||
+ | ...containing: | ||
+ | Modry | ||
+ | Action/ | ||
+ | Wipe | ||
+ | COPY? (Y/n) | ||
+ | |||
+ | Tasks copied! | ||
+ | </ | ||
+ | |||
+ | ===== Source code ==== | ||
+ | |||
+ | Download the script and make it executable "chmod +x uzzas.sh" | ||
+ | |||
+ | Run " | ||
+ | |||
+ | After update of the uzzas.sh script, do NOT reinstall it! | ||
+ | |||
+ | <code bash uzzas.sh> | ||
+ | #!/bin/bash | ||
+ | # | ||
+ | # UzZas - primitive boss behind your shoulder | ||
+ | # | ||
+ | # Dependency: CRON, sqlite3 | ||
+ | # | ||
+ | # Usage: | ||
+ | # | ||
+ | # uzzas.sh | ||
+ | # | ||
+ | |||
+ | dir=" | ||
+ | akce=" | ||
+ | db=" | ||
+ | |||
+ | case " | ||
+ | " | ||
+ | echo "==== Enter new task ====" | ||
+ | echo " | ||
+ | read day | ||
+ | echo " | ||
+ | read incr | ||
+ | echo " | ||
+ | read box | ||
+ | echo " | ||
+ | read ins | ||
+ | echo " | ||
+ | read note | ||
+ | echo "ADD? (Y/n)" | ||
+ | read ack | ||
+ | |||
+ | if [[ " | ||
+ | sqlite3 " | ||
+ | echo " | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | ;; | ||
+ | " | ||
+ | echo ".mode column^SELECT * FROM zas ORDER BY day ASC;" | tr ' | ||
+ | ;; | ||
+ | " | ||
+ | echo "==== Pick which action to delete (first column) ====" | ||
+ | echo ".mode column^SELECT rowid, | ||
+ | echo " | ||
+ | read del | ||
+ | if [[ " | ||
+ | sqlite3 " | ||
+ | echo " | ||
+ | else | ||
+ | echo "Not removed!" | ||
+ | fi | ||
+ | ;; | ||
+ | " | ||
+ | echo ".mode column^SELECT * FROM zas WHERE day=date(' | ||
+ | ;; | ||
+ | " | ||
+ | echo "==== Tomorrow TODO list ====" | ||
+ | echo ".mode column^SELECT * FROM zas WHERE day=date(' | ||
+ | ;; | ||
+ | " | ||
+ | echo " | ||
+ | echo ".mode column^SELECT rowid, | ||
+ | echo " | ||
+ | read hot | ||
+ | if [[ " | ||
+ | sqlite3 " | ||
+ | echo "All today' | ||
+ | else | ||
+ | if [[ " | ||
+ | then | ||
+ | if [[ " | ||
+ | sqlite3 " | ||
+ | echo "Task postponed!" | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | fi | ||
+ | ;; | ||
+ | " | ||
+ | touch " | ||
+ | sqlite3 " | ||
+ | (crontab -l 2>/ | ||
+ | echo "==== UzZas installed ====" | ||
+ | echo " | ||
+ | ;; | ||
+ | " | ||
+ | count=$(sqlite3 " | ||
+ | if [[ " | ||
+ | boxlen=$(sqlite3 " | ||
+ | inslen=$(sqlite3 " | ||
+ | notelen=$(sqlite3 " | ||
+ | todo=$(echo " | ||
+ | #zenity --width=600 --info --text=" | ||
+ | zenity --info --title=" | ||
+ | fi | ||
+ | ;; | ||
+ | " | ||
+ | echo "==== UzZas ====" | ||
+ | echo " | ||
+ | echo " " | ||
+ | echo "==== Dependencies ====" | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " " | ||
+ | echo "==== Usage ====" | ||
+ | echo " | ||
+ | echo " " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " | ||
+ | echo " " | ||
+ | echo "==== See brmlab.cz/ | ||
+ | echo " " | ||
+ | ;; | ||
+ | " | ||
+ | echo "==== Edit entry ====" | ||
+ | echo ".mode column^SELECT rowid, | ||
+ | echo " | ||
+ | read edit | ||
+ | if [[ " | ||
+ | row=$(echo ".mode line^SELECT * FROM zas WHERE rowid=$edit LIMIT 1;" | tr ' | ||
+ | day=$(echo " | ||
+ | incr=$(echo " | ||
+ | box=$(echo " | ||
+ | ins=$(echo " | ||
+ | note=$(echo " | ||
+ | |||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo "EDIT? (Y/n)" | ||
+ | read ack | ||
+ | |||
+ | if [[ " | ||
+ | sqlite3 " | ||
+ | echo "Tasks edited!" | ||
+ | else | ||
+ | echo "Edit cancelled!" | ||
+ | fi | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | ;; | ||
+ | " | ||
+ | echo "==== Clone entry ====" | ||
+ | echo ".mode column^SELECT rowid, | ||
+ | echo " | ||
+ | read clone | ||
+ | if [[ " | ||
+ | row=$(echo ".mode line^SELECT * FROM zas WHERE rowid=$clone LIMIT 1;" | tr ' | ||
+ | day=$(echo " | ||
+ | incr=$(echo " | ||
+ | box=$(echo " | ||
+ | ins=$(echo " | ||
+ | note=$(echo " | ||
+ | |||
+ | echo "== Edit cloned entry ==" | ||
+ | |||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo " | ||
+ | read -e -i " | ||
+ | echo "COPY? (Y/n)" | ||
+ | read ack | ||
+ | |||
+ | if [[ " | ||
+ | sqlite3 " | ||
+ | echo "Tasks copied!" | ||
+ | else | ||
+ | echo "Copy cancelled!" | ||
+ | fi | ||
+ | else | ||
+ | echo " | ||
+ | fi | ||
+ | ;; | ||
+ | esac | ||
+ | |||
+ | exit | ||
+ | </ | ||