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] # версия
|
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,
|
||||||
|
|||||||
Reference in New Issue
Block a user