summaryrefslogtreecommitdiff
path: root/synopticChart.sh
blob: 059665d9438d7087d975449ce9fbb31d302ac78e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/bin/bashset -euo pipefail# SJP 28 Nov 2021 — extended for deployment# Download BOM synoptic chart (IDY00030) and publish as PNG.# BOM permits anonymous FTP for personal use.# Charts are valid at 00, 06, 12, 18 UTC; files appear ~2h later.# Deployed to /opt/synoptic/synopticChart.sh on cremonde for pestrel.com.ARCHIVE_DIR=/var/lib/synoptic/archiveRAW_DIR=/var/lib/synoptic/archive/rawLATEST=/srv/www/pestrel/synopticLatest.pngrequire_cmd() {    local cmd="$1"    if ! command -v "$cmd" >/dev/null 2>&1; then        echo "Required command not found: ${cmd}" >&2        exit 127    fi}require_cmd curlrequire_cmd magickrequire_cmd gs# Return the datetime string for the most recently published chart slot.# BOM chart slots: 0000, 0600, 1200, 1800 UTC.DeriveTime() {    local nowDate nowTime fileTime    nowDate=$(date -u +%Y%m%d)    nowTime=$(date -u +%H%M)    if   [ "$nowTime" -ge 1800 ]; then fileTime=1800    elif [ "$nowTime" -ge 1200 ]; then fileTime=1200    elif [ "$nowTime" -ge 0600 ]; then fileTime=0600    else                               fileTime=0000    fi    echo "${nowDate}${fileTime}"}dateTime=$(DeriveTime)latestChart="IDY00030.${dateTime}.pdf"# -q no config file lookup  -f fail on error  -s silentcurlExit=0curl -q -fs -o "${latestChart}" "ftp://ftp.bom.gov.au/anon/gen/fwo/${latestChart}" \    || curlExit=$?if [ "$curlExit" -gt 0 ]; then    if [ "$curlExit" -eq 78 ]; then        echo "No file at remote site: ${latestChart} (curl exit ${curlExit})" >&2    fi    exit "$curlExit"fimagick -density 300 "${latestChart}" -resize 1920x1080 "${dateTime}.png"mv "${latestChart}" "${RAW_DIR}/"cp "${dateTime}.png" "${ARCHIVE_DIR}/"mv "${dateTime}.png" "${LATEST}"chmod 644 "${LATEST}"