#!/usr/bin/env python3 """JSON linter: validates and pretty-prints JSON files with structured output.""" import json import sys from pathlib import Path def validate_json_file(filepath: str) -> dict: """Validate a JSON file and return structured result.""" result = {"file": filepath, "valid": False, "error": None, "type": None, "keys": []} try: content = Path(filepath).read_text() data = json.loads(content) result["valid"] = True result["type"] = type(data).__name__ if isinstance(data, dict): result["keys"] = sorted(data.keys()) elif isinstance(data, list): result["length"] = len(data) except FileNotFoundError: result["error"] = "File not found" except json.JSONDecodeError as e: result["error"] = f"JSON parse error at line {e.lineno}, col {e.colno}: {e.msg}" except Exception as e: result["error"] = str(e) return result if __name__ == "__main__": if len(sys.argv) < 2: print(json.dumps({"error": "Usage: json_lint.py "})) sys.exit(1) result = validate_json_file(sys.argv[1]) print(json.dumps(result, indent=2)) sys.exit(0 if result["valid"] else 1)