#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import json

ROOT = os.getcwd()

report = {
    "framework": "Laravel",
    "detected": False,
    "version": "Unknown",
    "paths": {}
}

artisan = os.path.join(ROOT, "artisan")

if os.path.isfile(artisan):
    report["detected"] = True

composer = os.path.join(ROOT, "composer.json")

if os.path.isfile(composer):

    with open(composer, "r", encoding="utf-8", errors="ignore") as f:
        content = f.read()

    marker = '"laravel/framework":'

    if marker in content:
        start = content.find(marker)
        start = content.find('"', start + len(marker))
        end = content.find('"', start + 1)

        if start != -1 and end != -1:
            report["version"] = content[start + 1:end]

folders = [
    "app",
    "bootstrap",
    "config",
    "database",
    "public",
    "resources",
    "routes",
    "storage"
]

for folder in folders:
    report["paths"][folder] = os.path.isdir(os.path.join(ROOT, folder))

audit = os.path.join(ROOT, "audit")

if not os.path.exists(audit):
    os.makedirs(audit)

outfile = os.path.join(audit, "laravel.json")

with open(outfile, "w") as f:
    json.dump(report, f, indent=4)

print("=" * 60)
print("DOOCTOR DEVKIT - LARAVEL SCANNER")
print("=" * 60)
print("Laravel détecté :", report["detected"])
print("Version         :", report["version"])
print()

for name in folders:
    print("{:<12} {}".format(name + ":", report["paths"][name]))

print()
print("Rapport :", outfile)
