summaryrefslogtreecommitdiff
path: root/script
diff options
context:
space:
mode:
authorStefan Kreutz <mail@skreutz.com>2022-04-28 14:55:17 +0200
committerStefan Kreutz <mail@skreutz.com>2022-04-28 14:55:17 +0200
commit3ba902a37daa8f28552ca43665458f97d0634e26 (patch)
tree94a2270849d626d21422a624c0637d19eb09fe41 /script
parente699c3ec492b7c9128f4c89d71e6b9aec3c4fbda (diff)
downloadblog-3ba902a37daa8f28552ca43665458f97d0634e26.tar
Move shell scripts to dedicated directory
Diffstat (limited to 'script')
-rwxr-xr-xscript/check21
-rwxr-xr-xscript/deploy59
-rwxr-xr-xscript/watch3
3 files changed, 83 insertions, 0 deletions
diff --git a/script/check b/script/check
new file mode 100755
index 0000000..6428077
--- /dev/null
+++ b/script/check
@@ -0,0 +1,21 @@
+#! /bin/sh
+
+# Run third-party markup checkers.
+# See W3C Developer Tools at https://w3c.github.io/developers/tools/
+
+open() {
+ xdg-open "$@" >/dev/null 2>&1 &
+}
+
+# W3C Nu HTML Checker
+open "https://validator.w3.org/nu/?doc=https%3A%2F%2Fwww.skreutz.com%2Fposts%2Funix-domain-socket-forwarding-with-openssh%2F"
+
+# W3C CSS Validator
+open "https://jigsaw.w3.org/css-validator/validator?uri=https%3A%2F%2Fwww.skreutz.com%2F&profile=css3svg&usermedium=all&warning=1&vextwarning=&lang=en"
+
+# W3C Feed Validator
+open "https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Fwww.skreutz.com%2Ffeeds%2Fposts.rss"
+open "https://validator.w3.org/feed/check.cgi?url=https%3A%2F%2Fwww.skreutz.com%2Ffeeds%2Fposts.atom"
+
+# W3C Link Checker
+open "https://validator.w3.org/checklink?uri=https%3A%2F%2Fwww.skreutz.com%2F&hide_type=all&recursive=on&depth=10&check=Check"
diff --git a/script/deploy b/script/deploy
new file mode 100755
index 0000000..ec2a6f3
--- /dev/null
+++ b/script/deploy
@@ -0,0 +1,59 @@
+#! /bin/sh
+
+# Deploy the static website.
+#
+# Re-generates the static website from source and asserts a clean working tree
+# before uploading the website to the server.
+#
+# Submits the sitemap URL to Google and Bing.
+
+set -o errexit
+set -o nounset
+
+# Git root directory
+root="$( git rev-parse --show-toplevel )"
+
+# Source directory with a trailing slash for rsync
+src="${root}/_site/"
+
+# Git revision
+rev="$( git rev-parse --verify HEAD )"
+
+# ISO 8601 timestamp
+now="$( date -u "+%Y-%m-%dT%H:%M:%SZ" )"
+
+# Archive file name
+archive="./${now}_${rev}.tar.gz"
+
+printf "Re-generating static website from source ...\\n"
+( cd "${root}" \
+ && cabal v2-run exe:site -- clean >/dev/null 2>&1 \
+ && cabal v2-run exe:site -- build >/dev/null 2>&1 )
+
+[ -z "$( git status --porcelain )" ] || {
+ ( >&2 printf "error: dirty working tree\\n" )
+ printf "Aborting deployment due to unstaged changes or untracked files.\\n"
+ exit 1
+}
+
+openrsync --rsync-path=openrsync --archive --delete --verbose \
+ "${src}" "engine.skreutz.com:/var/www/htdocs/www.skreutz.com"
+
+tar -czf "${archive}" "${src}"
+scp "${archive}" engine.skreutz.com:archive/www/
+rm "${archive}"
+
+curl \
+ --silent \
+ --output /dev/null \
+ http://www.google.com/ping?sitemap=https://www.skreutz.com/sitemap.xml \
+ || ( >&2 printf "error: failed to submit live sitemap to google.com\\n" )
+
+curl \
+ --silent \
+ --output /dev/null \
+ http://www.bing.com/ping?sitemap=https%3A%2F%2Fwww.skreutz.com/sitemap.xml \
+ || ( >&2 printf "error: failed to submit live sitemap to bing.com\\n" )
+
+# shellcheck source=./check
+. "${root}/script/check"
diff --git a/script/watch b/script/watch
new file mode 100755
index 0000000..f12d1a7
--- /dev/null
+++ b/script/watch
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+cabal v2-run exe:site -- watch
Generated by cgit. See skreutz.com for my tech blog and contact information.