#!/usr/bin/env bash # Usage: recit entries [-p project-name] [-t time|today|yesterday|tomorrow] # Summary: Display entries, optionally for a project and/or a certain time set -e # shellcheck source=/dev/null source lib/loader recfile=$(load_recit) project="" query_time="" while getopts "p:t:" options; do case "${options}" in p) project=${OPTARG} ;; t) query_time=${OPTARG} ;; :) echo "Error: -${OPTARG} requires an argument." exit 1 ;; *) exit 1 ;; esac done expression="" if ! [[ "$query_time" = "" ]]; then if [[ "$query_time" = "today" ]]; then fmt_date=$(date '+%Y-%m-%d') elif [[ "$query_time" = "tomorrow" ]]; then fmt_date=$(perl -e "use POSIX qw(strftime); print strftime('%Y-%m-%d', localtime(time + 86400)), qq(\n);") elif [[ "$query_time" = "yesterday" ]]; then fmt_date=$(perl -e "use POSIX qw(strftime); print strftime('%Y-%m-%d', localtime(time - 86400)), qq(\n);") else fmt_date=$query_time fi expression="((Time >> '$fmt_date 00:00:00' && Time << '$fmt_date 23:59:59') || Time == '$fmt_date')" fi if ! [[ "$project" = "" ]]; then if recsel -t Project -p Id ${recfile} | grep "$project" > /dev/null; then if [[ "$expression" = "" ]]; then expression="ProjectRef = '$project'" else expression+=" && ProjectRef = '$project'" fi else echo "$project not found, list of available projects:" recsel -t Project -p Id ${recfile} exit 1 fi fi if [[ "$expression" = "" ]]; then out=$(recsel -t Entry "${recfile}" | recfmt -f share/recit/templates/entries.templ) echo -e "$out" else recsel -t Entry -e "$expression" "${recfile}" fi