Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Scripted by ARB.
- # Contact at www.gab.com/KiteX3.
- TIMETRACKER_FILE=~/Documents/notes/timetracker.txt
- PRINT_TIMETRACK_GENERAL(){
- START_TIME=$1
- ROWS=$2
- TAGS=$(( $(tput cols) / 32 * $ROWS ))
- cat $TIMETRACKER_FILE <((date +"%s.%N %F")) |
- awk -v TODAY=$START_TIME '$1 > TODAY' |
- sed 's:[/+]: :g' |
- awk -M '{if(NR>1 && n != "End"){print (4*3600 < $1-t ? 1800 : $1 - t),n;}; t=$1; delete labels; for(i=2;i<=NF;i++){labels[$i]=1;}; first=1; for (i in labels){if(first == 1){n=i; first=0}else{n=n " " i}}; }' |
- sort -k2 |
- awk '{for(i=2;i<=NF;i++){ if($i !~ /^@.*/ && $i != "and"){arr[$i]+=$1} }; } END {for (i in arr) {printf "\033[1;36m%02d:%02d:%02d:%02d \033[1;33m%s\033[0m\n",int(arr[i]/86400) ,int(arr[i]/3600)%24, int(arr[i]/60)%60, int(arr[i]%60), substr(i,1,19)}}' |
- sort -n -r |
- head -n $TAGS |
- column
- }
- PRINT_TIMETRACK_CATEGORIES(){
- START_TIME=$1]
- ROWS=$2
- TAGS=$(( $(tput cols) / 32 * $ROWS ))
- cat $TIMETRACKER_FILE <((date +"%s.%N %F")) |
- awk -v TODAY=$START_TIME '$1 > TODAY' |
- sed 's:[/+]: :g' |
- awk -M '{if(NR>1 && n != "End"){print (4*3600 < $1-t ? 1800 : $1 - t),n;}; t=$1; delete labels; for(i=2;i<=NF;i++){labels[$i]=1;}; first=1; for (i in labels){if(first == 1){n=i; first=0}else{n=n " " i}}; }' |
- sort -k2 |
- awk '{for(i=2;i<=NF;i++){ if($i ~ /^@.*/){arr[$i]+=$1} }; } END {for (i in arr) {printf "\033[1;36m%02d:%02d:%02d:%02d \033[1;33m%s\033[0m\n",int(arr[i]/86400) ,int(arr[i]/3600)%24, int(arr[i]/60)%60, int(arr[i]%60), substr(i,1,19)}}' |
- sort -n -r |
- head -n $TAGS |
- column
- }
- PRINT_TIMETRACK_RECENT(){
- START_TIME=$1
- cat $TIMETRACKER_FILE <((date +"%s.%N %F")) |
- awk -v TODAY=$START_TIME '$1 > TODAY' |
- awk -M '{if(NR>1 && n != "End"){print (4*3600 < $1-t ? 1800 : $1 - t),n;}; t=$1; delete labels; for(i=2;i<=NF;i++){labels[$i]=1;}; first=1; for (i in labels){if(first == 1){n=i; first=0}else{n=n " " i}}; }' |
- sort -k2 |
- awk '{for(i=2;i<=NF;i++){ arr[$i]+=$1 }; } END {for (i in arr) {printf "\033[1;36m%02d:%02d:%02d \033[1;33m%s\033[0m\n" ,int(arr[i]/3600)%24, int(arr[i]/60)%60, int(arr[i]%60), i}}' |
- sort -n -r
- }
- PRINT_TIMETRACK_MOBILE(){
- START_TIME=$1
- cat $TIMETRACKER_FILE <((date +"%s.%N %F")) |
- awk -v TODAY=$START_TIME '$1 > TODAY' |
- # sed 's:[/+]: :g' |
- awk '{if(NR>1 && n != "End"){print (4*3600 < $1-t ? 1800 : $1 - t),n;}; t=$1; delete labels; for(i=2;i<=NF;i++){labels[$i]=1;}; first=1; for (i in labels){if(first == 1){n=i; first=0}else{n=n " " i}}; }' |
- sort -k2 |
- awk '{for(i=2;i<=NF;i++){ if($i !~ /^@.*/ && $i != "and"){arr[$i]+=$1} }; } END {for (i in arr) {printf "\033[1;36m%02d:%02d:%02d:%02d \033[1;33m%s\033[0m\n",int(arr[i]/86400) ,int(arr[i]/3600)%24, int(arr[i]/60)%60, int(arr[i]%60), i}}' |
- sort -n -r |
- head -n 20
- }
- SORT_TIMETRACK(){
- LEN_TIMETRACKER=$(wc -l $TIMETRACKER_FILE)
- TIMETRACKER_BACKUP=$(mktemp)
- echo $TIMETRACKER_BACKUP
- cat $TIMETRACKER_FILE > $TIMETRACKER_BACKUP
- cat $TIMETRACKER_BACKUP | sort -n > $TIMETRACKER_FILE
- diff -c $TIMETRACKER_BACKUP $TIMETRACKER_FILE
- }
- WRITE_TIMETRACK(){
- [ $# -lt 2 ] && { echo "WRITE_TIMETRACK called with no time!" ; return ;}
- echo $@ >> $TIMETRACKER_FILE
- }
- usage(){
- echo "timetrack"
- echo "Put some info here plox"
- }
- ALLTIME=0
- YEARLY=1
- MONTHLY=1
- WEEKLY=1
- MOBILE=0
- TIME_TO_ENTER=$(date +%s.%N)
- LAST_DATE=$( tail -n 1 $TIMETRACKER_FILE | awk '{print $1}')
- while true ; do
- case "$1" in
- -A )
- ALLTIME=1
- YEARLY=1
- MONTHLY=1
- WEEKLY=1
- MOBILE=0
- shift
- ;;
- -Y )
- ALLTIME=0
- YEARLY=1
- MONTHLY=1
- WEEKLY=1
- MOBILE=0
- shift
- ;;
- -M )
- ALLTIME=0
- YEARLY=0
- MONTHLY=1
- WEEKLY=1
- MOBILE=0
- shift
- ;;
- -W )
- ALLTIME=0
- YEARLY=0
- MONTHLY=0
- WEEKLY=1
- MOBILE=0
- shift
- ;;
- -m )
- ALLTIME=0
- YEARLY=0
- MONTHLY=0
- WEEKLY=0
- MOBILE=1
- TIME_TO_ENTER=$(date +%s.000000000)
- shift
- ;;
- -d )
- [ $MOBILE -eq 0 ] && { TIME_TO_ENTER=$(date -d "$2" +%s.%N) ;}
- [ $MOBILE -eq 1 ] && { TIME_TO_ENTER=$(date +%s.000000000) ;}
- shift 2
- ;;
- -S )
- echo "Sorting $TIMETRACKER_FILE ..."
- SORT_TIMETRACK
- exit 0
- ;;
- -h )
- usage
- exit 1
- ;;
- -* )
- echo "Unrecognized tag. Printing usage and exiting."
- usage
- exit 1
- ;;
- *)
- break
- ;;
- esac
- done;
- # Check for errors in TIME_TO_ENTER
- echo $TIME_TO_ENTER | grep -e '[0-9]\{9,11\}\.[0-9]\{9\}' > /dev/null || {
- echo -e "Invalid TIME_TO_ENTER:\n( $TIME_TO_ENTER ).\nCheck validity of '-d' flag." ;
- exit 2 ;
- }
- [ $(echo "$TIME_TO_ENTER > $LAST_DATE" | bc -l) -eq 0 ] && {
- echo -e "TIME_TO_ENTER ( $TIME_TO_ENTER ) precedes last timetracker entry.";
- date -d "@$(echo $TIME_TO_ENTER | grep -o '^[0-9]*')";
- echo -e "Are you sure you wish to enter?\n[y/N]";
- read choice;
- case $choice in
- y*)
- echo -e "Forcing entry into timetracker.\nSorting records afterwards with 'timetrack -S' is recommended."
- ;;
- *)
- exit 3;
- ;;
- esac
- }
- if [ $# -gt 0 ]
- then
- #echo "$(date +%s.%N) $@" >> $TIMETRACKER_FILE
- [ $MOBILE -eq 0 ] && { WRITE_TIMETRACK $TIME_TO_ENTER "$@" ;}
- [ $MOBILE -eq 1 ] && { WRITE_TIMETRACK $TIME_TO_ENTER "$@" ;}
- fi
- cat $TIMETRACKER_FILE | tail -n 5
- echo -e ''
- # ALLTIME ACTIVITY TRACKER
- if [ $ALLTIME -eq 1 ]
- then
- # KEYWORD TRACKER
- echo -e "\033[1;34m---ALLTIME ACTIVITY BY KEYWORD---\033[0m"
- PRINT_TIMETRACK_GENERAL 0 3
- # CATEGORICAL TRACKER
- echo -e "\033[1;34m---ALLTIME ACTIVITY BY CATEGORY---"
- PRINT_TIMETRACK_CATEGORIES 0 2
- fi
- # YEAR ACTIVITY TRACKER
- if [ $YEARLY -eq 1 ]
- then
- echo -e "\033[1;34m---"$(date +%Y | tr '[:lower:]' '[:upper:]' )" ACTIVITY BY KEYWORD---"
- PRINT_TIMETRACK_GENERAL $(date -d "Jan 1" +%s.%N) 6
- echo -e "\033[1;34m---"$(date +%Y | tr '[:lower:]' '[:upper:]' )" ACTIVITY BY CATEGORY---"
- PRINT_TIMETRACK_CATEGORIES $(date -d "Jan 1" +%s.%N) 2
- fi
- # MONTHLY
- if [ $MONTHLY -eq 1 ]
- then
- echo -e "\033[1;34m---"$(date +%B | tr '[:lower:]' '[:upper:]' )" ACTIVITY BY KEYWORD---"
- PRINT_TIMETRACK_GENERAL $(date -d "12am $(date +%b) 1" +%s.%N) 6
- echo -e "\033[1;34m---"$(date +%B | tr '[:lower:]' '[:upper:]' )" ACTIVITY BY CATEGORY---"
- PRINT_TIMETRACK_CATEGORIES $(date -d "12am $(date +%b) 1" +%s.%N) 2
- fi
- # WEEKLY
- if [ $WEEKLY -eq 1 ]
- then
- echo -e "\033[1;34m---"$(echo $(date -d "last sunday" +"%b %d") " TO " $(date -d "sunday" +"%b %d") | tr '[:lower:]' '[:upper:]' )" WEEKLY ACTIVITY BY KEYWORD---"
- PRINT_TIMETRACK_GENERAL $(date -d "last sunday 11:59pm" +"%s.%N") 6
- echo -e "\033[1;34m---"$(echo $(date -d "last sunday" +"%b %d") " TO " $(date -d "sunday" +"%b %d") | tr '[:lower:]' '[:upper:]' )" WEEKLY ACTIVITY BY CATEGORY---"
- PRINT_TIMETRACK_CATEGORIES $(date -d "last sunday 11:59pm" +"%s.%N") 2
- fi
- # TODAY
- if [ $MOBILE -eq 0 ]
- then
- echo -e "\033[1;34m---TODAY'S ACTIVITY---"
- PRINT_TIMETRACK_RECENT $(date -d "12am" +%s.%N)
- fi
- if [ $MOBILE -eq 1 ]
- then
- echo -e "\033[1;34m---TODAY'S ACTIVITY---"
- PRINT_TIMETRACK_MOBILE $(date -d "00:00" +%s.%N)
- fi
Advertisement
Add Comment
Please, Sign In to add comment