|
26 | 26 |
|
27 | 27 | from pprint import pprint |
28 | 28 | from blackduck import Client |
29 | | -from collections import defaultdict |
30 | 29 |
|
31 | | -def getlicensesfromprojectversion(subproject): |
32 | | - subprojecturl=subproject['_meta']['href'] |
33 | | - x = subprojecturl.split("/") |
| 30 | +def getprojects(project_name): |
| 31 | + params = { |
| 32 | + 'q': [f"name:{project_name}"] |
| 33 | + } |
| 34 | + projects = [p for p in bd.get_resource('projects', params=params) if p['name'] == project_name] |
| 35 | + return projects |
| 36 | + |
| 37 | +def getversions(project, version_name): |
| 38 | + params = { |
| 39 | + 'q': [f"versionName:{version_name}"] |
| 40 | + } |
| 41 | + versions = [v for v in bd.get_resource('versions', project, params=params) if v['versionName'] == version_name] |
| 42 | + return versions |
| 43 | + |
| 44 | +def returnsubprojecturl(x): |
| 45 | + xurl=x['_meta']['href'] |
| 46 | + x = xurl.split("/") |
34 | 47 | del x[5] |
35 | 48 | del x[5] |
36 | 49 | del x[5] |
37 | 50 | del x[5] |
38 | | - subprojecturl = "/".join(x) |
| 51 | + xurl = "/".join(x) |
| 52 | + return xurl |
| 53 | + |
| 54 | +def getsubprojects(version): |
| 55 | + subcomponents = [ subcomponents for subcomponents in bd.get_resource('components',version) if subcomponents['componentType'] == "SUB_PROJECT" ] |
| 56 | + return subcomponents |
| 57 | + |
| 58 | +def checkforsubprojects(subproject): |
| 59 | + subprojecturl = returnsubprojecturl(subproject) |
| 60 | + version = bd.session.get(subprojecturl).json() |
| 61 | + subcomponents = [ subcomponents for subcomponents in bd.get_resource('components',version) if subcomponents['componentType'] == "SUB_PROJECT" ] |
| 62 | + if len(subcomponents)>0: |
| 63 | + check = True |
| 64 | + else: |
| 65 | + check= False |
| 66 | + return check |
| 67 | + |
| 68 | +def getlicensesfromprojectversion(subproject): |
| 69 | + subprojecturl = returnsubprojecturl(subproject) |
39 | 70 | version = bd.session.get(subprojecturl).json() |
40 | 71 | components = bd.get_resource('components',version) |
41 | 72 | licenselist = [] |
@@ -66,30 +97,24 @@ def main(): |
66 | 97 | bd = Client(base_url=args.base_url, token=access_token, verify=args.no_verify, timeout=60.0, retries=4) |
67 | 98 | process_project_version(args.project_name, args.version_name, args) |
68 | 99 |
|
| 100 | +def process_children(children): |
| 101 | + sys.exit() |
| 102 | + |
69 | 103 | def process_project_version(project_name, version_name, args): |
70 | 104 | #Validating only 1 Project |
71 | | - params = { |
72 | | - 'q': [f"name:{args.project_name}"] |
73 | | - } |
74 | | - projects = [p for p in bd.get_resource('projects', params=params) if p['name'] == args.project_name] |
| 105 | + projects = getprojects(args.project_name) |
75 | 106 | assert len(projects) == 1, f"There should be one, and only one project named {args.project_name}. We found {len(projects)}" |
76 | 107 | project = projects[0] |
77 | 108 |
|
78 | 109 | #Validates only 1 Version |
79 | | - params = { |
80 | | - 'q': [f"versionName:{args.version_name}"] |
81 | | - } |
82 | | - versions = [v for v in bd.get_resource('versions', project, params=params) if v['versionName'] == args.version_name] |
| 110 | + versions = getversions(project, args.version_name) |
83 | 111 | assert len(versions) == 1, f"There should be one, and only one version named {args.version_name}. We found {len(versions)}" |
84 | 112 | version = versions[0] |
85 | 113 |
|
86 | 114 | #Return only sub-projects, not components |
87 | | - components = [ |
88 | | - c for c in bd.get_resource('components',version) if c['componentType'] == "SUB_PROJECT" |
89 | | - ] |
| 115 | + components = getsubprojects(version) |
90 | 116 |
|
91 | 117 | for subproject in components: |
92 | | - |
93 | 118 | url = subproject['_meta']['href'] |
94 | 119 | subprojectlicenses = getlicensesfromprojectversion(subproject) |
95 | 120 | licenseblock = [ |
|
0 commit comments