From 62f4d9f94815a472d77b571939349257aa3655b8 Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Mon, 25 Nov 2024 12:41:06 +0300 Subject: [PATCH] [~] Refactor --- dotfiles/.local/bin/commands | 46 ++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/dotfiles/.local/bin/commands b/dotfiles/.local/bin/commands index 7e68ac4..50e5360 100755 --- a/dotfiles/.local/bin/commands +++ b/dotfiles/.local/bin/commands @@ -3726,6 +3726,49 @@ def install(argv: list[str]) -> None: logger.info(dict(msg='done')) +def backup(argv: list[str]) -> None: + parser = argparse.ArgumentParser() + parser.add_argument( + '-r', '--recipients', + #type=list[str], + action='append', + default=[], + ) + parser.add_argument( + '-o', '--output_dir', + #type=list[str], + required=True, + ) + + options, args = parser.parse_known_args(argv) + + assert len(options.recipients) > 0 + + subprocess.check_call(r''' + (\ + mkdir -p ~/.cache/; \ + P=~/.cache/"secrets-$(date -Iseconds).tar.xz.gpg"; \ + tar -J -cvf - ~/.gnupg ~/.ssh ~/.histfile | \ + gpg -e {GPG_ARGS} > $P; \ + echo $P; \ + sudo -E P=$P sh -c \ + '\ + mkdir -p {OUTPUT_DIR}; \ + cp $P {OUTPUT_DIR}; + ';\ + sync; \ + ) + '''.replace( + '{GPG_ARGS}', + ' '.join([ + '-r %s' % o + for o in options.recipients + ]), + ).replace( + '{OUTPUT_DIR}', + options.output_dir, + ), shell=True) + class Command(enum.StrEnum): media = 'media' @@ -3749,6 +3792,7 @@ class Command(enum.StrEnum): pm_service = 'pm-service' scrap_yt_music = 'scrap-yt-music' vpn = 'vpn' + backup = 'backup' def commands_cli() -> None: logging.getLogger().setLevel(logging.INFO) @@ -3824,6 +3868,8 @@ def commands_cli() -> None: desktop_services(args) elif options.command is Command.pm_service: pm_service(args) + elif options.command is Command.backup: + backup(args) elif options.command is Command.scrap_yt_music: scrap_yt_music(args) elif options.command is Command.vpn: