doc: add a script to upload the nightly manual manually

This is not like, perfect, since it is a manual operation, but we can
automate it in the future. rclone is used, since it seems like awscli is
not (obviously at least?) able to sync directories such that old things
are deleted, and rclone does this thing properly.

Fixes: lix-project/meta#2
Change-Id: Ia6a46d861342a6d29b22f981ba4e35e79f79e60e
This commit is contained in:
jade 2024-05-14 14:22:58 -07:00
parent 4b35e6a75e
commit 58ff8960cd
2 changed files with 48 additions and 0 deletions

8
doc/manual/rclone.conf Normal file
View file

@ -0,0 +1,8 @@
[lix-docs]
type = s3
provider = Other
env_auth = true
endpoint = https://s3.lix.systems
location_constraint = garage
region = garage
acl = private

40
maintainers/upload_manual.sh Executable file
View file

@ -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/