browser: wget-ifmodified script to download new caniuse data
[sheet.git] / tools / wget-ifmodified
diff --git a/tools/wget-ifmodified b/tools/wget-ifmodified
new file mode 100755 (executable)
index 0000000..bae00f1
--- /dev/null
@@ -0,0 +1,26 @@
+#!/usr/bin/env sh
+
+set -u
+
+if [ -z "$1" ]
+then
+       echo 'Usage: $0 <url> [<target>]' >&2
+       # download url to target location if modified
+       exit 64 # EX_USAGE
+fi
+
+source=$1
+target=${2:-${source##*/}}
+
+if [ -e "$target" ]
+then
+       modified=$(stat -c%y -L "$target") &&
+       modified=$(date -R -d "$modified")
+       echo download since: $modified
+fi
+
+headers=${modified:+If-Modified-Since: $modified}
+wget -nv --header="$headers" -O "$target.new" "$source" &&
+mv "$target.new" "$target" ||
+rm "$target.new" # clean up failed download (usually empty 304 response)
+