From 6ae7e65d6397f1168fbb745f84d9b8c9e24696b3 Mon Sep 17 00:00:00 2001 From: Ole Morud Date: Mon, 17 Aug 2026 21:02:43 +0200 Subject: [PATCH] Add gd* utils --- zsh/aliases.zsh | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/zsh/aliases.zsh b/zsh/aliases.zsh index 9ea5878..217b8bd 100644 --- a/zsh/aliases.zsh +++ b/zsh/aliases.zsh @@ -24,3 +24,39 @@ _take() { cd $1 } +# gd: Check dependencies and auth +_gdcheck() { + # deps + local missing=() + for cmd in rclone zstd gpg; do + command -v "$cmd" >/dev/null 2>&1 || missing+=("$cmd") + done + (( ${#missing[@]} == 0 )) || { + print -u2 "Missing dependencies: ${missing[*]}" + return 1 + } + + # auth + rclone lsd gdrive: >/dev/null 2>&1 || { + print -u2 "Google Drive auth failed; try: rclone config reconnect gdrive:" + return 1 + } +} + +# gdpush pushes a file to Google Drive +gdpush() { + _gdcheck || return + zstd -6 -T0 -c -- "$1" | gpg -c -z 0 -o - | rclone rcat "gdrive:backups/${1:t}.zst.gpg" +} + +# gdls lists files in Google Drive +gdls() { + _gdcheck || return + rclone lsf --files-only gdrive:backups/ | sed 's/\.zst\.gpg$//' +} + +# gdpull pulls a file from Google Drive +gdpull() { + _gdcheck || return + rclone cat "gdrive:backups/${1:t}.zst.gpg" | gpg -d | zstd -d -c +}