From dece59efebc8a2b9d77279126db9bb8d00d9dfe1 Mon Sep 17 00:00:00 2001 From: chest Date: Sun, 21 Dec 2025 19:12:45 +0300 Subject: [PATCH] feat: language find with code --- main.py | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/main.py b/main.py index ff114ad..d23e308 100644 --- a/main.py +++ b/main.py @@ -15,7 +15,7 @@ for c in client.containers.list(all=True): ver = c.image.tags[0].split(':')[-1] # версия else: ver = None workdir = info["Config"].get("WorkingDir") or '/' # рабочая директория - find_cmd = ( + req_find_cmd = ( f"sh -c \"cd {workdir} 2>/dev/null && " "find . -maxdepth 3 \\( " "-name 'requirements*.txt' -o " @@ -24,7 +24,7 @@ for c in client.containers.list(all=True): "-name 'package.json' " "\\) 2>/dev/null | head -n 5\"" ) - req = c.exec_run(find_cmd)[1].decode() # путь до файла с зависимостями + req = c.exec_run(req_find_cmd)[1].decode() # путь до файла с зависимостями req_paths = [line.strip() for line in req.splitlines() if line.strip()] language = None @@ -36,6 +36,41 @@ for c in client.containers.list(all=True): language = "nodejs" break + code_find_cmd = ( + f"cd {workdir} 2>/dev/null || cd /; " + "find . -maxdepth 4 -type f \\( " + "-name 'main.*' -o " + "-name 'app.*' -o " + "-name 'index.*' " + "\\) 2>/dev/null | head -n 10" + ) + code = c.exec_run(code_find_cmd) + code_paths = [line.strip() for line in code[1].decode(errors='ignore').splitlines() if line.strip()] + + if language is None: + for p in code_paths: + p_lower = p.lower() + if p_lower.endswith(".py"): + language = "python" + break + if p_lower.endswith(".js") or p_lower.endswith(".mjs") or p_lower.endswith(".cjs"): + language = "nodejs" + break + if p_lower.endswith(".php"): + language = "php" + break + if p_lower.endswith(".rb"): + language = "ruby" + break + if p_lower.endswith(".go"): + language = "go" + break + if p_lower.endswith(".rs"): + language = "rust" + break + if p_lower.endswith(".java"): + language = "java" + break container = { "name": c.name,