#!/opt/venvs/securedrop-app-code/bin/python

#
# Purges deleted sources and their data.
#

import argparse
import logging
import sys
import time

sys.path.insert(0, "/var/www/securedrop")

import journalist_app
from sdconfig import SecureDropConfig


def parse_args():
    parser = argparse.ArgumentParser(
        prog=__file__,
        description="Utility for asynchronous deletion of SecureDrop sources and their data.",
    )
    parser.add_argument(
        "-i",
        "--interval",
        type=int,
        help="Keep running every 'interval' seconds.",
    )

    return parser.parse_args()


def purge_deleted_sources():
    try:
        journalist_app.utils.purge_deleted_sources()
    except Exception as e:
        logging.info(f"Error purging deleted sources: {e}")


def main():
    args = parse_args()
    logging.basicConfig(format="%(asctime)s %(levelname)s %(message)s", level=logging.INFO)
    if args.interval:
        logging.info(f"Purging deleted sources every {args.interval} seconds.")
        while 1:
            purge_deleted_sources()
            time.sleep(args.interval)
    else:
        logging.info("Purging deleted sources once.")
        purge_deleted_sources()


if __name__ == "__main__":
    config = SecureDropConfig.get_current()
    app = journalist_app.create_app(config)
    with app.app_context():
        main()
