bundlewrap/scripts/encrypt_file
2023-02-05 17:30:58 +01:00

42 lines
1.1 KiB
Python
Executable file

#!/usr/bin/env python3
from os import environ
from os.path import abspath, isfile, join, relpath
from sys import argv
from bundlewrap.repo import Repository
path = environ.get('BW_REPO_PATH', '.')
repo = Repository(path)
if len(argv) < 3:
print('Usage: {} <source> <target> [encryption key, default \'encrypt\']'.format(argv[0]))
exit(1)
target = abspath(argv[2])
datapath = join(abspath(path), 'data')
if not isfile(argv[1]):
print('ERROR: Source file \'{}\' does not exist.'.format(argv[1]))
exit(1)
if not target.endswith('.vault'):
print('ERROR: Target file \'{}\' does not end in .vault'.format(argv[2]))
exit(1)
elif not target.startswith(datapath):
print('ERROR: Target file \'{}\' is not in BW_REPO_PATH/data/'.format(argv[2]))
exit(1)
if isfile(target):
if input('ERROR: Target file \'{}\' already exists, overwrite? [yN]'.format(argv[2])) not in ['y', 'Y']:
print('Abort')
exit(2)
if len(argv) > 3:
key = argv[3]
else:
key = 'encrypt'
repo.vault.encrypt_file(argv[1], relpath(target, start=datapath), key)
print('encryption successful')