diff options
author | Vincent Ambo <mail@tazj.in> | 2022-12-27T11·18+0300 |
---|---|---|
committer | tazjin <tazjin@tvl.su> | 2022-12-28T08·17+0000 |
commit | fe4cdff4426327be15ffa8e98f6c2b278dd9c84d (patch) | |
tree | f69e4e6e993ccce6a44c8148fcdbb911918c8d80 | |
parent | eb62cb14214f6591949668c61b4fdc985d3d8d33 (diff) |
feat(tools/fetch-depot-inbox): wrapper script to fetch depot maildir r/5514
This script fetches the inbox for depot@tvl.su into the specified directory in maildir format. The layout of the folder follows the structure generated by public inbox, i.e. the directory containing the current maildir will be `$TARGET/su.tvl.depot.0`, but most mail clients (e.g notmuch) will figure this out on their own. ---- In addition, we would ideally find a CLI mail client that can be pointed at an arbitrary maildir (or an IMAP server) and works with local `sendmail` config so that people can have a single command entry point to interacting with depot@tvl.su. Change-Id: Iaf9fcce73e9caa2f202327488c43d0394be26ca6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7644 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
-rw-r--r-- | tools/depot-deps.nix | 1 | ||||
-rw-r--r-- | tools/fetch-depot-inbox.nix | 49 |
2 files changed, 50 insertions, 0 deletions
diff --git a/tools/depot-deps.nix b/tools/depot-deps.nix index 62f390508ccb..60af9f1378c5 100644 --- a/tools/depot-deps.nix +++ b/tools/depot-deps.nix @@ -6,6 +6,7 @@ depot.nix.lazy-deps { age-keygen.attr = "third_party.nixpkgs.age"; age.attr = "third_party.nixpkgs.age"; depotfmt.attr = "tools.depotfmt"; + fetch-depot-inbox.attr = "tools.fetch-depot-inbox"; gerrit-update.attr = "tools.gerrit-update"; gerrit.attr = "tools.gerrit-cli"; hash-password.attr = "tools.hash-password"; diff --git a/tools/fetch-depot-inbox.nix b/tools/fetch-depot-inbox.nix new file mode 100644 index 000000000000..e14ddf20e0a6 --- /dev/null +++ b/tools/fetch-depot-inbox.nix @@ -0,0 +1,49 @@ +# Wrapper script that uses offlineimap to fetch the depot inbox from +# inbox.tvl.su. +# +# Run with the desired output directory as the only argument. +# +# Alternatively, users can browse the inbox on https://inbox.tvl.su +# and interact with public-inbox in any other supported way (IMAP, +# NNTP, git, etc.). +{ pkgs, depot, ... }: + +let + config = pkgs.writeText "offlineimaprc" '' + [general] + accounts = depot + + [Account depot] + localrepository = Local + remoterepository = Remote + + [Repository Local] + type = Maildir + # localfolders set by CLI + + [Repository Remote] + type = IMAP + ssl = yes + sslcacertfile = /etc/ssl/certs/ca-bundle.crt + remotehost = inbox.tvl.su + remoteuser = anonymous + remotepass = anonymous + ''; +in +pkgs.writeShellScriptBin "fetch-depot-inbox" '' + readonly MAILDIR=''${1} + + if [ -z "''${MAILDIR}" ]; then + echo "[inbox] must specify target maildir as the first argument!" >&2 + exit 1 + fi + + if [ ! -d "''${MAILDIR}" ]; then + echo "[inbox] specified maildir must exist and be a directory!" >&2 + exit 1 + fi + + echo "[inbox] Synchronising TVL depot inbox into ''${MAILDIR}" + ${pkgs.offlineimap}/bin/offlineimap -c ${config} \ + -k "Repository_Local:localfolders=''${MAILDIR}" +'' |