aboutsummaryrefslogtreecommitdiff
path: root/maintainers/upload_manual.sh
diff options
context:
space:
mode:
Diffstat (limited to 'maintainers/upload_manual.sh')
-rwxr-xr-xmaintainers/upload_manual.sh40
1 files changed, 40 insertions, 0 deletions
diff --git a/maintainers/upload_manual.sh b/maintainers/upload_manual.sh
new file mode 100755
index 000000000..f50520490
--- /dev/null
+++ b/maintainers/upload_manual.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+cd "$(dirname -- "$0")/.."
+
+# This script uploads the Lix manual to the Lix s3 store.
+# It expects credentials to be configured like so:
+#
+# ~/.aws/credentials:
+#
+# [default]
+# aws_access_key_id = SOMEACCESSKEY
+# aws_secret_access_key = SOMESECRETKEY
+#
+# default can also be replaced by some other string if AWS_PROFILE is set in
+# environment.
+#
+# See: https://rclone.org/s3/#authentication
+#
+# To obtain such a key, log into the garage host and run:
+# (obtain GARAGE_RPC_SECRET into environment perhaps by systemctl cat garage)
+# garage key create SOME-KEY-NAME
+# garage bucket allow --read --write docs --key SOME-KEY-NAME
+
+if [[ ! -f result-doc/share/doc/nix/manual/index.html ]]; then
+ echo -e "result-doc does not appear to contain a Lix manual. You can build one with:\n nix build '.#default^*'" >&2
+ exit 1
+fi
+
+# --checksum: https://rclone.org/s3/#avoiding-head-requests-to-read-the-modification-time
+# By default rclone uses the modification time to determine if something needs
+# syncing. This is actually very bad for our use case, since we have small
+# files that have meaningless (Unix epoch) local modification time data. We can
+# make it go both 16x faster and more correct by using md5s instead.
+rclone \
+ --config doc/manual/rclone.conf \
+ -vv \
+ sync \
+ --checksum \
+ result-doc/share/doc/nix/manual/ lix-docs:docs/manual/nightly/