63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
from banking_breakdown import ui, regex_categorizer, statement_parser, \
|
|
document_builder
|
|
|
|
import argparse
|
|
|
|
|
|
def categorize_func(args):
|
|
import pandas as pd
|
|
|
|
df = pd.read_csv(args.i, delimiter=args.d)
|
|
|
|
if args.f is not None:
|
|
df = regex_categorizer.assign_categories(df, args.f)
|
|
|
|
import signal
|
|
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
|
|
|
ui.show_main_window(df=df)
|
|
|
|
|
|
def report_func(args):
|
|
report_data = statement_parser.parse_statement(args.i)
|
|
document_builder.build_document(report_data)
|
|
|
|
|
|
#
|
|
# Define CLI
|
|
#
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(prog='banking_breakdown',
|
|
description='Visualize bank statements')
|
|
|
|
subparsers = parser.add_subparsers()
|
|
|
|
categorize_parser = subparsers.add_parser("categorize")
|
|
categorize_parser.set_defaults(func=categorize_func)
|
|
categorize_parser.add_argument('-i', required=True,
|
|
help="Bank statement CSV")
|
|
categorize_parser.add_argument('-f', required=False,
|
|
help="JSON file containing regexes to"
|
|
" pre-categorize statement entries")
|
|
categorize_parser.add_argument('-d', required=False,
|
|
help="Delimiter to use when reading the"
|
|
" bank statement", default=',')
|
|
|
|
report_parser = subparsers.add_parser("report")
|
|
report_parser.set_defaults(func=report_func)
|
|
report_parser.add_argument('-i', required=True,
|
|
help="CSV output file from categorization step")
|
|
|
|
args = parser.parse_args()
|
|
|
|
if hasattr(args, 'func'):
|
|
args.func(args)
|
|
else:
|
|
parser.print_help()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|