#!/opt/cloudlinux/venv/bin/python3 -sbb
# Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2026 All Rights Reserved
#
# Licensed under CLOUD LINUX LICENSE AGREEMENT
# http://cloudlinux.com/docs/LICENSE.TXT

"""Run the one-time plugin-copy repair by hand (CLOS-7040). Normally it runs off the cron tick."""

import argparse
import sys

from clwpos.clsop_repair import LOGFILE_PATH, MARKER_PATH, is_done, run_once
from clwpos.logsetup import init_wpos_sentry_safely


def main(argv=None) -> int:
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument(
        '--dry-run', default=False, action='store_true', help='report what would be repaired and change nothing'
    )
    parser.add_argument(
        '--force', default=False, action='store_true', help='run even though this machine already had its pass'
    )

    args = parser.parse_args(argv)

    init_wpos_sentry_safely()

    if not args.force and not args.dry_run and is_done():
        print(f'This machine already had its repair pass ({MARKER_PATH}). Pass --force to run it again.')
        return 0

    summary = run_once(dry_run=args.dry_run, force=args.force)
    if not summary:
        print(f'The pass did not run. See {LOGFILE_PATH}.')
        return 1

    print(summary)
    print(f'Details: {LOGFILE_PATH}')
    return 0


if __name__ == '__main__':
    sys.exit(main())
