#!/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: {} [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')