#!/usr/bin/env python3
"""Fix the malformed code in crawler_admin.py"""
import re

with open('/root/crawler_admin.py', 'r') as f:
    c = f.read()

# Fix 1: broken 'cfg = json.load(open(CONFIG_PATH)\nif isinstance(cfg, list):\n    cfg = {"crawlers": cfg})'
# Should be: 'cfg = json.load(open(CONFIG_PATH))\nif isinstance(cfg, list):\n    cfg = {"crawlers": cfg}'
old1 = "cfg = json.load(open(CONFIG_PATH)\nif isinstance(cfg, list):\n    cfg = {\"crawlers\": cfg})"
new1 = "cfg = json.load(open(CONFIG_PATH))\nif isinstance(cfg, list):\n    cfg = {\"crawlers\": cfg}"
c = c.replace(old1, new1)

# Fix 2: broken '_json.load(open(cfg_path)\nif isinstance...'
old2 = "cfg = _json.load(open(cfg_path)\nif isinstance(cfg, list):\n    cfg = {\"crawlers\": cfg})"
new2 = "cfg = _json.load(open(cfg_path))\nif isinstance(cfg, list):\n    cfg = {\"crawlers\": cfg}"
c = c.replace(old2, new2)

# Verify all cfg=json.load lines are properly closed
lines = c.split('\n')
for i, line in enumerate(lines):
    if 'json.load(open' in line and not line.rstrip().endswith(')'):
        print("WARNING line {}: {}".format(i+1, line.strip()[:80]))

with open('/root/crawler_admin.py', 'w') as f:
    f.write(c)

try:
    import py_compile
    py_compile.compile('/root/crawler_admin.py', doraise=True)
    print("Syntax OK")
except py_compile.PyCompileError as e:
    print("Syntax ERROR:", e)
