From 15f78cba52ccc3f2e93c097a031b2114a057a371 Mon Sep 17 00:00:00 2001 From: Anton Vakhrushev Date: Thu, 24 Oct 2019 12:07:22 +0300 Subject: [PATCH] Pass file and password with args --- 1export.py | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/1export.py b/1export.py index 06ff99e..4de8742 100644 --- a/1export.py +++ b/1export.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- +import argparse import csv import json import os @@ -37,6 +38,8 @@ DUMMY_RECORD_SET = [ def main(): + args = parse_args() + output_file_name = os.path.abspath(args.file_name) vaults = [process_vault(v) for v in retrieve_vaults()] # vaults = [ # Vault(title='t1', records=DUMMY_RECORD_SET), @@ -48,10 +51,22 @@ def main(): print('Store temp files in {}'.format(dir_path)) for vault in vaults: save_vault(dir_path, vault) - encrypt_saved_data(dir_path, 'export', '123') + if args.password: + export_encrypted(dir_path, output_file_name, args.password) + else: + export_plain(dir_path, output_file_name) print('Done') +def parse_args(): + parser = argparse.ArgumentParser(description='Export 1password logins') + parser.add_argument('file_name', type=str, + help='output file name') + parser.add_argument('--password', dest='password', + help='encrypt data') + return parser.parse_args() + + def process_vault(vault): vault_uuid = vault['uuid'] vault_name = vault['name'] @@ -83,11 +98,15 @@ def save_vault(base_dir, vault): ]) -def encrypt_saved_data(dir_path, file_name, password): +def export_plain(dir_path, file_name): + sp.run([TAR_BIN, '-cf', file_name + '.tar', '-C', dir_path, '.']) + + +def export_encrypted(dir_path, file_name, password): gpg_name = file_name + '.tar.gpg' with tempfile.TemporaryDirectory(suffix='-one-password-export') as tar_dir_path: - print('Store temp tar in ' + tar_dir_path) - tar_name = os.path.join(tar_dir_path, file_name + '.tar') + tar_name = os.path.join(tar_dir_path, os.path.basename(file_name) + '.tar') + print('Store temp tar in ' + tar_name) sp.run([TAR_BIN, '-cf', tar_name, '-C', dir_path, '.']) sp.run([GPG_BIN, '--symmetric', '--batch', '--yes', '--passphrase', password, '--output', gpg_name, tar_name])