feat: language find with code

This commit is contained in:
2025-12-21 19:12:45 +03:00
parent f93e857d93
commit dece59efeb
+37 -2
View File
@@ -15,7 +15,7 @@ for c in client.containers.list(all=True):
ver = c.image.tags[0].split(':')[-1] # версия ver = c.image.tags[0].split(':')[-1] # версия
else: ver = None else: ver = None
workdir = info["Config"].get("WorkingDir") or '/' # рабочая директория workdir = info["Config"].get("WorkingDir") or '/' # рабочая директория
find_cmd = ( req_find_cmd = (
f"sh -c \"cd {workdir} 2>/dev/null && " f"sh -c \"cd {workdir} 2>/dev/null && "
"find . -maxdepth 3 \\( " "find . -maxdepth 3 \\( "
"-name 'requirements*.txt' -o " "-name 'requirements*.txt' -o "
@@ -24,7 +24,7 @@ for c in client.containers.list(all=True):
"-name 'package.json' " "-name 'package.json' "
"\\) 2>/dev/null | head -n 5\"" "\\) 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()] req_paths = [line.strip() for line in req.splitlines() if line.strip()]
language = None language = None
@@ -36,6 +36,41 @@ for c in client.containers.list(all=True):
language = "nodejs" language = "nodejs"
break 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 = { container = {
"name": c.name, "name": c.name,