| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #!/bin/bash
- RED="\033[41m \033[0m"
- GREEN="\033[42m \033[0m"
- GAP=" "
- if [ $# -lt 1 ]; then
- echo "Usage: $0 birthdate [username]"
- echo "Example: $0 1985-06-08 Joe"
- exit 1
- fi
- birthdate=$1
- name=${2:-$USER}
- columns=${3:-20}
- life_expectancy=80
- last_year_index=$((life_expectancy - 1))
- case "$(uname)" in
- "Linux")
- birth_year=$(date -d "$birthdate" +"%Y")
- birth_timestamp=$(date -d "$birthdate" +%s)
- ;;
- "Darwin")
- birth_year=$(date -j -f "%Y-%m-%d" "$birthdate" +"%Y")
- birth_timestamp=$(date -j -f "%Y-%m-%d" "$birthdate" +%s)
- ;;
- *) echo "Unsupported OS"; exit 1 ;;
- esac
- current_year=$(date +"%Y")
- current_timestamp=$(date +%s)
- years_passed=$((current_year - birth_year))
- weeks_passed=$(( (current_timestamp - birth_timestamp) / 604800 ))
- total_weeks=$((life_expectancy * 52))
- weeks_remaining=$((total_weeks - weeks_passed))
- echo -e "$name, only $weeks_remaining Sundays remain\n"
- rows=$((life_expectancy / columns))
- for (( row=0; row<rows; row++ )); do
- for (( col=0; col<columns; col++ )); do
- year_index=$((row * columns + col))
- if (( year_index == 0 )); then
- echo $birth_year
- fi
- if (( year_index < years_passed )); then
- echo -ne "${RED}${GAP}"
- else
- echo -ne "${GREEN}${GAP}"
- fi
- done
- echo
- if (( year_index != $last_year_index )); then
- echo
- fi
- done
- # print spaces before last year
- gaps=$((columns - 1))
- squares=$((columns * 2))
- indent=$((gaps + squares - 4))
- for ((i=0; i<indent; i++)); do
- echo -n ' '
- done
- last_year=$((birth_year + last_year_index))
- echo $last_year
- echo -e "\nHow are you going to spend these Sundays, $name?"
|