You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.4 KiB
Bash
76 lines
2.4 KiB
Bash
2 years ago
|
#!/usr/bin/env bash
|
||
|
# this script enables water tracking in tmux status bar via a simple command
|
||
|
# tracking resets everyday at midnight local time
|
||
|
# to inc/dec water consumed just call water XX where XX is any integer amount of ounces to change your total by
|
||
|
# it is really only ever exepected to use negatives to fix mistakes
|
||
|
# the file writes like a log where the last entry is total consumed and the difference between two consecutive entries is the water consumed in that entry
|
||
|
# i.e
|
||
|
# 10:00:01 0 starts off at 0 in a new day
|
||
|
# 10:14:21 16 drank 16 ounces of water so it goes up
|
||
|
# 11:10:21 48 drank 32 more ounces of water so new total is 48
|
||
|
|
||
|
# setting up vars
|
||
|
declare waterfile
|
||
|
declare -i water_intake
|
||
|
declare output
|
||
|
|
||
|
curtime=$(timedatectl | grep Local | cut -d '-' -f 2-) # getting date to MM-DD HH:MM:SS TMZ
|
||
|
date=$(echo $curtime | awk '{print $1}') # for filename
|
||
|
time=$(echo $curtime | awk '{print $2}') # for timestamp
|
||
|
|
||
|
waterfile="$HOME/.dotfiles/bin/water/waterintake/$date" # makes it easy to reset on each new day
|
||
|
|
||
|
mkdir -p "$HOME/.dotfiles/bin/water/waterintake"
|
||
|
|
||
|
# update func
|
||
|
update() {
|
||
|
printf '%s: %s\n' "$time" "$water_intake" >> "$waterfile"
|
||
|
}
|
||
|
|
||
|
# getting current water level
|
||
|
get_water_intake() {
|
||
|
if [[ -f $waterfile ]] ; then
|
||
|
water_intake=$(cat $waterfile | tail -n 1 | awk '{print $2}')
|
||
|
else
|
||
|
water_intake=0
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
reset_water_intake() {
|
||
|
water_intake=0
|
||
|
update
|
||
|
}
|
||
|
|
||
|
colorize_water_intake() {
|
||
|
# sends water intake level through conditionals to be colorized
|
||
|
dflt='#[default]'
|
||
|
if [[ $water_intake -lt 32 ]] ; then
|
||
|
color='#[fg=color1]' # red
|
||
|
elif [[ $water_intake -lt 64 ]] ; then
|
||
|
color='#[fg=color3]' # bad yellow
|
||
|
elif [[ $water_intake -lt 96 ]] ; then
|
||
|
color='#[fg=color226]' # pale yellow
|
||
|
elif [[ $water_intake -lt 128 ]] ; then
|
||
|
color='#[fg=color10]' # light green
|
||
|
else
|
||
|
color='#[fg=color21]' # blue
|
||
|
fi
|
||
|
output="${color}\uf6aa ${water_intake}${dflt}"
|
||
|
}
|
||
|
|
||
|
# checking for/creating missing files
|
||
|
if [[ ! -f $waterfile ]] ; then
|
||
|
# water intake file doesn't exist
|
||
|
reset_water_intake
|
||
|
fi
|
||
|
|
||
|
# evaluating arguements
|
||
|
get_water_intake
|
||
|
if [[ -z $1 ]] ; then
|
||
|
colorize_water_intake # optional color codes based on total consumption
|
||
|
echo -e $output # no args is basic echo
|
||
|
else
|
||
|
water_intake="$((water_intake + $1))" # provided value to inc/dec water intake by
|
||
|
update
|
||
|
fi
|