Skip to content

Commit

Permalink
Merge pull request #69 from BBVA/develop
Browse files Browse the repository at this point in the history
Add python lang
  • Loading branch information
Sergiodfdez committed Jan 18, 2018
2 parents 1f81ffa + 3c9eb89 commit 136a74e
Showing 1 changed file with 47 additions and 1 deletion.
48 changes: 47 additions & 1 deletion deeptracy/tasks/scan_deps.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ def get_dependencies(lang: str, sources: str):
if lang == 'java':
return get_dependencies_for_java(sources, mounted_vol, docker_volumes)

if lang == 'python':
return get_dependencies_for_python(sources, mounted_vol, docker_volumes)


def get_dependencies_for_nodejs(sources: str, mounted_vol: str, docker_volumes: dict):
image = 'node:latest'
Expand Down Expand Up @@ -139,7 +142,7 @@ def get_dependencies_for_nodejs(sources: str, mounted_vol: str, docker_volumes:


def get_dependencies_for_java(sources: str, mounted_vol: str, docker_volumes: dict):
image = 'maven-gradle:0.0.1'
image = 'bbvalabs/deeptracy-maven-gradle'
script_contents = ('#!/bin/bash \n'
'mkdir /tmp/deeptracy \n'
'cp -R {mounted_vol} /tmp/deeptracy \n'
Expand Down Expand Up @@ -194,3 +197,46 @@ def get_dependencies_for_java(sources: str, mounted_vol: str, docker_volumes: di
.split(line)[1].replace("\n", "").split(":")
dep_list.append('{}:{}'.format(name_package, version_part))
return dep_list


def get_dependencies_for_python(sources: str, mounted_vol: str, docker_volumes: dict):
image = 'python:latest'
script_contents = ('#!/bin/bash \n'
'mkdir /tmp/deeptracy \n'
'cp -R {mounted_vol} /tmp/deeptracy \n'
'cd {mounted_vol} \n'
'pip install -r requirements.txt \n'
'pip list >> python.txt \n').format(
mounted_vol=mounted_vol
)

# create the script that makes the clone
script = os.path.join(sources, 'get_deps.sh')
with open(script, "w") as f:
f.write(script_contents)

os.system('chmod +x {}'.format(script))
command = os.path.join(mounted_vol, 'get_deps.sh') # execute script IGNORING errors

logger.debug('extract deps with command {}'.format(command))

docker_client = docker.from_env()

docker_client.containers.run(
image=image,
command=command,
remove=True,
volumes=docker_volumes,
detach=False
)

dep_list = []
if "python.txt" in listdir(sources):
file = open(join(sources, "python.txt"), 'r')
for line in file.readlines():
parts = line.split(" ")
name_package = parts[0]
pattern = re.compile(r'([0-9.]+)')
version_part = pattern.split(parts[1])[1]
dep_list.append('{}:{}'.format(name_package, version_part))
return dep_list

0 comments on commit 136a74e

Please sign in to comment.