+#! /bin/bash
+
+set -e
+
+DIR_DATA="$HOME/var/run/today"
+FILE_WEATHER="$DIR_DATA/weather"
+
+mkdir -p "$DIR_DATA"
+
+repeat() {
+ x="$1"
+ n="$2"
+ awk -v x="$x" -v n="$n" 'BEGIN {for (i=1; i<=n; i++) {printf x}}'
+}
+
+bar=$(repeat '-' '80')
+ts_fmt='+%A, %Y %B %d, %H:%M:%S'
+ts_lang='el_GR.UTF-8'
+timestamp_local=$(LANG="$ts_lang" date "$ts_fmt")
+timestamp_west=$( LANG="$ts_lang" TZ='US/Pacific' date "$ts_fmt")
+timestamp_pl=$( LANG="$ts_lang" TZ='Poland' date "$ts_fmt")
+timestamp_nz=$( LANG="$ts_lang" TZ='NZ' date "$ts_fmt")
+
+ip_addresses=$(
+ ip addr \
+ | awk '
+ /^[0-9]+:/ {
+ interface = $2
+ sub(":$", "", interface)
+ interfaces[++interface_count] = interface
+ }
+
+ /^ +inet +/ {
+ addr = $2
+ sub("/[0-9]+$", "", addr)
+ addrs[interface] = addr
+ }
+
+ END {
+ for (i=1; i<=interface_count; i++) {
+ interface = interfaces[i]
+ print interface, addrs[interface]
+ }
+ }' \
+ | column -t
+)
+
+weather_fetch() {
+ curl "http://wttr.in/${ZIP_CODE}?1" \
+ 1> "$FILE_WEATHER" \
+ 2> /dev/null
+}
+
+weather_file_age() {
+ echo $(( $(date +%s) - $(stat -c '%Y' "$FILE_WEATHER") ))
+}
+
+weather_get_or_fetch() {
+ weather_file_age_limit=$(( 3 * 60 * 60 ))
+ if [[ ! -e $FILE_WEATHER || weather_file_age -ge $weather_file_age_limit ]]
+ then
+ weather_fetch
+ fi
+ cat "$FILE_WEATHER"
+}
+
+weather="$(weather_get_or_fetch)"
+
+clear
+#LANG="$ts_lang" ncal -M $(date +%Y)
+LANG="$ts_lang" ncal -M
+echo "$bar"
+(
+ echo 'LOCAL' ',' "$timestamp_local"
+ echo 'Pacific' ',' "$timestamp_west"
+ echo 'Poland' ',' "$timestamp_pl"
+ echo 'New Zealand' ',' "$timestamp_nz"
+) \
+| column -ts,
+echo "$bar"
+echo "$ip_addresses"
+echo "$bar"
+echo ''
+echo "Fetched on: $(stat -c %y $FILE_WEATHER)"
+echo "$weather"
+echo ''