feat: prepare PyPi upload

This commit is contained in:
relikd
2023-02-21 20:53:43 +01:00
parent 4e9e70f341
commit f7ea272c7d
8 changed files with 125 additions and 2 deletions

48
abcddb2vcard/abcddb2vcard.py Executable file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/env python3
'''
Extract data from AddressBook database (.abcddb) to Contacts VCards file (.vcf)
'''
import os
import sys
from pathlib import Path
from argparse import ArgumentParser
try:
from .ABCDDB import ABCDDB
except ImportError: # fallback if not run as module
from ABCDDB import ABCDDB # type: ignore[import, no-redef]
DB_FILE = str(Path.home().joinpath(
'Library', 'Application Support', 'AddressBook', 'AddressBook-v22.abcddb'))
cli = ArgumentParser(description=__doc__)
cli.add_argument('output', type=str, metavar='outfile.vcf',
help='VCard output file.')
cli.add_argument('-f', '--force', action='store_true',
help='Overwrite existing output file.')
cli.add_argument('-i', '--input', type=str, metavar='AddressBook.abcddb',
default=DB_FILE, help='Specify another abcddb input file.'
' Default: ' + DB_FILE)
args = cli.parse_args()
# check input args
if not os.path.isfile(args.input):
print('AddressBook "{}" does not exist.'.format(args.input),
file=sys.stderr)
exit(1)
elif not os.path.isdir(os.path.dirname(args.output) or os.curdir):
print('Output parent directory does not exist.', file=sys.stderr)
exit(1)
elif os.path.isfile(args.output) and not args.force:
print('Output file already exist. Use -f to force overwrite.',
file=sys.stderr)
exit(1)
# perform export
contacts = ABCDDB.load(args.input)
with open(args.output, 'w') as f:
for rec in contacts:
f.write(rec.makeVCard())
print(len(contacts), 'contacts.')
exit()