feat: language find with code
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user