Compare commits
2 Commits
2465032eef
...
2d8b033c3e
| Author | SHA1 | Date | |
|---|---|---|---|
| 2d8b033c3e | |||
| 6ae7e65d63 |
114
zsh/aliases.zsh
114
zsh/aliases.zsh
@@ -24,3 +24,117 @@ _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
|
||||
}
|
||||
}
|
||||
|
||||
gd-auth() {
|
||||
rclone lsd gdrive: >/dev/null 2>&1 || {
|
||||
print -u2 "Google Drive auth failed; try: rclone config reconnect gdrive:"
|
||||
return 1
|
||||
}
|
||||
}
|
||||
|
||||
gd-check() {
|
||||
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
|
||||
}
|
||||
|
||||
gd-auth
|
||||
}
|
||||
|
||||
# gd-push pushes a file to Google Drive with compression and password encryption
|
||||
gd-push() {
|
||||
gd-check || return
|
||||
zstd -6 -T0 -c -- "$1" \
|
||||
| gpg -c -z 0 -o - \
|
||||
| rclone rcat "gdrive:backups/${1:t}.zst.gpg"
|
||||
}
|
||||
|
||||
# gd-push pulls a file from Google Drive, password decrypts and decompresses it.
|
||||
# gd-push outputs to stdout
|
||||
gd-pull() {
|
||||
gd-check || return
|
||||
rclone cat "gdrive:backups/${1:t}.zst.gpg" \
|
||||
| gpg -d \
|
||||
| zstd -d -c
|
||||
}
|
||||
|
||||
# gd-ls lists all the files available on Google Drive
|
||||
gd-ls() {
|
||||
gd-check || return
|
||||
rclone lsf --files-only gdrive:backups/ \
|
||||
| sed -n 's/\.zst\.gpg$//p'
|
||||
}
|
||||
|
||||
# gd-rm removes a file from Google Drive
|
||||
gd-rm() {
|
||||
gd-check || return
|
||||
rclone deletefile "gdrive:backups/${1:t}.zst.gpg"
|
||||
}
|
||||
|
||||
# dispatcher for gd functions
|
||||
gd() {
|
||||
local command="$1"
|
||||
shift 2>/dev/null || true
|
||||
|
||||
case "$command" in
|
||||
push)
|
||||
gd-push "$@"
|
||||
;;
|
||||
pull)
|
||||
gd-pull "$@"
|
||||
;;
|
||||
ls)
|
||||
gd-ls "$@"
|
||||
;;
|
||||
rm)
|
||||
gd-rm "$@"
|
||||
;;
|
||||
check)
|
||||
gd-check "$@"
|
||||
;;
|
||||
auth)
|
||||
gd-auth "$@"
|
||||
;;
|
||||
"")
|
||||
print -u2 "usage: gd <command> [args]"
|
||||
print -u2 ""
|
||||
print -u2 "commands:"
|
||||
print -u2 " push <path> Compress, encrypt, and upload a file"
|
||||
print -u2 " pull <path> Download, decrypt, and decompress to stdout"
|
||||
print -u2 " ls List available files"
|
||||
print -u2 " rm <path> Remove a file from Google Drive"
|
||||
print -u2 " check Check dependencies and authentication"
|
||||
print -u2 " auth Check Google Drive authentication"
|
||||
return 2
|
||||
;;
|
||||
*)
|
||||
print -u2 "gd: unknown command: $command"
|
||||
print -u2 "usage: gd {push|pull|ls|rm|check|auth} ..."
|
||||
return 2
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user