74640e0ea89bfdf826a0189d7508053dcd8a57be
[khome.git] / bin / today
1 #! /bin/bash
2
3 set -e
4
5 DIR_DATA="$HOME/var/run/today"
6 FILE_WEATHER="$DIR_DATA/weather"
7
8 mkdir -p "$DIR_DATA"
9
10 repeat() {
11 x="$1"
12 n="$2"
13 awk -v x="$x" -v n="$n" 'BEGIN {for (i=1; i<=n; i++) {printf x}}'
14 }
15
16 bar=$(repeat '-' '80')
17 ts_fmt='+%A, %Y %B %d, %H:%M:%S'
18 ts_lang='el_GR.UTF-8'
19 timestamp_local=$(LANG="$ts_lang" date "$ts_fmt")
20 timestamp_west=$( LANG="$ts_lang" TZ='US/Pacific' date "$ts_fmt")
21 timestamp_pl=$( LANG="$ts_lang" TZ='Poland' date "$ts_fmt")
22 timestamp_nz=$( LANG="$ts_lang" TZ='NZ' date "$ts_fmt")
23
24 ip_addresses=$(
25 ip addr \
26 | awk '
27 /^[0-9]+:/ {
28 interface = $2
29 sub(":$", "", interface)
30 interfaces[++interface_count] = interface
31 }
32
33 /^ +inet +/ {
34 addr = $2
35 sub("/[0-9]+$", "", addr)
36 addrs[interface] = addr
37 }
38
39 END {
40 for (i=1; i<=interface_count; i++) {
41 interface = interfaces[i]
42 print interface, addrs[interface]
43 }
44 }' \
45 | column -t
46 )
47
48 weather_fetch() {
49 curl "http://wttr.in/${ZIP_CODE}?1" \
50 1> "$FILE_WEATHER" \
51 2> /dev/null
52 }
53
54 weather_get_or_fetch() {
55 weather_file_age=$(( $(date +%s) - $(stat -c '%Y' "$FILE_WEATHER") ))
56 weather_file_age_limit=$(( 3 * 60 * 60 ))
57 if [[ ! -e $FILE_WEATHER || $weather_file_age -ge $weather_file_age_limit ]]
58 then
59 weather_fetch
60 fi
61 cat "$FILE_WEATHER"
62 }
63
64 clear
65 #LANG="$ts_lang" ncal -M $(date +%Y)
66 LANG="$ts_lang" ncal -M
67 echo "$bar"
68 (
69 echo 'LOCAL' ',' "$timestamp_local"
70 echo 'Pacific' ',' "$timestamp_west"
71 echo 'Poland' ',' "$timestamp_pl"
72 echo 'New Zealand' ',' "$timestamp_nz"
73 ) \
74 | column -ts,
75 echo "$bar"
76 echo "$ip_addresses"
77 echo "$bar"
78 echo ''
79 echo "Fetched on: $(stat -c %y $FILE_WEATHER)"
80 echo "$(weather_get_or_fetch)"
81 echo ''
This page took 0.075909 seconds and 3 git commands to generate.