#! /bin/bash export TODO_SERVER_URL="${TODO_SERVER_URL:-"https://todo-server.remote.blapointe.com"}" export TODO_SERVER_HEADERS="${TODO_SERVER_HEADERS:-"Cookie: BOAuthZ=$TODO_SERVER_BOAUTHZ"}" export TODO_SERVER_LIST="${TODO_SERVER_LIST:-"2548023766"}" main() { from_todo_server_to_pttodo_main "$@" } from_todo_server_to_pttodo_main() { set -e set -o pipefail local tasks_in_todo="$(fetch_tasks_in_list | format_tasks_in_list)" local schedule_tasks_in_flight="$(COMPL=1 LOOPING=1 fetch_tasks_in_list | format_tasks_in_list)" echo "{\"todo\": $tasks_in_todo, \"scheduled\": $schedule_tasks_in_flight, \"done\": []}" | yq -P eval - } format_tasks_in_list() { jq -c .list[] | while read -r line; do echo "$line" \ | jq '{ todo: .title, details:.note, ts: (if .compl == 1 then (.dateCompleted | strptime("%d %b %Y %I:%M %p") | mktime) else .dateEditedInt end), subtasks: [], tags: .tags, schedule: (if (.cron != "") then (.cron) else (.loop) end) }' \ | jq -c . done | jq -sc | yq -P eval - | grep -v -E ' (""|\[]|0s)$' | yq -j eval - | jq -c . } fetch_tasks_in_list() { todo_server_curl "$TODO_SERVER_URL/ajax.php?loadTasks=&list=$TODO_SERVER_LIST&compl=${COMPL:-0}&looping=${LOOPING:-0}" } todo_server_curl() { local csv_headers="$TODO_SERVER_HEADERS" local headers=() while [ "$csv_headers" != "" ]; do header="${csv_headers%%,*}" headers+=("-H" "${header%%:*}: ${header#*:}") if echo "$csv_headers" | grep -q ,; then csv_headers="${csv_headers#*,}" else csv_headers="" fi done curl -sS "${headers[@]}" "$@" } if [ "$0" == "$BASH_SOURCE" ]; then main "$@" fi