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

#
# Clears the SecureDrop shredder directory, securely deleting its contents.
#

import argparse
import logging
import sys
import time

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

import journalist_app
from sdconfig import SecureDropConfig
from store import Storage


def parse_args():
    parser = argparse.ArgumentParser(
        prog=__file__,
        description="Utility for clearing deleted content in the SecureDrop store.",
    )
    parser.add_argument(
        "-i",
        "--interval",
        type=int,
        help="Keep running every 'interval' seconds.",
    )

    return parser.parse_args()


def clear_shredder():
    try:
        Storage.get_default().clear_shredder()
    except Exception as e:
        logging.info(f"Error clearing shredder: {e}")


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


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