Skip to content

Commit e5e4dfb

Browse files
committed
Changed Dependency Overview to new template
1 parent e8336f7 commit e5e4dfb

File tree

5 files changed

+57
-30
lines changed

5 files changed

+57
-30
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
66

77
[project]
88
name = "socketsecurity"
9-
version = "2.0.52"
9+
version = "2.0.53"
1010
requires-python = ">= 3.10"
1111
license = {"file" = "LICENSE"}
1212
dependencies = [

socketsecurity/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
__author__ = 'socket.dev'
2-
__version__ = '2.0.52'
2+
__version__ = '2.0.53'

socketsecurity/core/__init__.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
FullScan,
2222
Issue,
2323
Package,
24-
Purl,
24+
Purl
2525
)
2626
from socketsecurity.core.exceptions import APIResourceNotFound
2727
from socketsecurity.core.licenses import Licenses
@@ -644,7 +644,7 @@ def create_diff_report(
644644
seen_removed_packages = set()
645645

646646
for package_id, package in added_packages.items():
647-
purl = Core.create_purl(package_id, added_packages)
647+
purl = self.create_purl(package_id, added_packages)
648648
base_purl = f"{purl.ecosystem}/{purl.name}@{purl.version}"
649649

650650
if (not direct_only or package.direct) and base_purl not in seen_new_packages:
@@ -658,7 +658,7 @@ def create_diff_report(
658658
)
659659

660660
for package_id, package in removed_packages.items():
661-
purl = Core.create_purl(package_id, removed_packages)
661+
purl = self.create_purl(package_id, removed_packages)
662662
base_purl = f"{purl.ecosystem}/{purl.name}@{purl.version}"
663663

664664
if (not direct_only or package.direct) and base_purl not in seen_removed_packages:
@@ -682,8 +682,13 @@ def create_diff_report(
682682

683683
return diff
684684

685-
@staticmethod
686-
def create_purl(package_id: str, packages: dict[str, Package]) -> Purl:
685+
def get_all_scores(self, packages: dict[str, Package]) -> dict[str, Package]:
686+
components = []
687+
for package_id in packages:
688+
package = packages[package_id]
689+
return packages
690+
691+
def create_purl(self, package_id: str, packages: dict[str, Package]) -> Purl:
687692
"""
688693
Creates the extended PURL data for package identification and tracking.
689694
@@ -707,7 +712,8 @@ def create_purl(package_id: str, packages: dict[str, Package]) -> Purl:
707712
size=package.size,
708713
transitives=package.transitives,
709714
url=package.url,
710-
purl=package.purl
715+
purl=package.purl,
716+
scores=package.score
711717
)
712718
return purl
713719

socketsecurity/core/classes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,6 @@ def __init__(self, **kwargs):
370370
def __str__(self):
371371
return json.dumps(self.__dict__)
372372

373-
374373
class Purl:
375374
"""
376375
Represents a Package URL (PURL) with extended metadata.
@@ -392,6 +391,7 @@ class Purl:
392391
author_url: str
393392
url: str
394393
purl: str
394+
scores: dict[str, int]
395395

396396
def __init__(self, **kwargs):
397397
if kwargs:

socketsecurity/core/messages.py

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -456,11 +456,9 @@ def dependency_overview_template(diff: Diff) -> str:
456456
md = MdUtils(file_name="markdown_overview_temp.md")
457457
md.new_line("<!-- socket-overview-comment-actions -->")
458458
md.new_header(level=1, title="Socket Security: Dependency Overview")
459-
md.new_line("New and removed dependencies detected. Learn more about [socket.dev](https://socket.dev)")
459+
md.new_line("Review the following changes in direct dependencies. Learn more about [socket.dev](https://socket.dev)")
460460
md.new_line()
461461
md = Messages.create_added_table(diff, md)
462-
if len(diff.removed_packages) > 0:
463-
md = Messages.create_remove_line(diff, md)
464462
md.create_md_file()
465463
if len(md.file_data_text.lstrip()) >= 65500:
466464
md = Messages.short_dependency_overview_comment(diff)
@@ -471,7 +469,7 @@ def short_dependency_overview_comment(diff: Diff) -> MdUtils:
471469
md = MdUtils(file_name="markdown_overview_temp.md")
472470
md.new_line("<!-- socket-overview-comment-actions -->")
473471
md.new_header(level=1, title="Socket Security: Dependency Overview")
474-
md.new_line("New and removed dependencies detected. Learn more about [socket.dev](https://socket.dev)")
472+
md.new_line("Review the following changes in direct dependencies. Learn more about [socket.dev](https://socket.dev)")
475473
md.new_line()
476474
md.new_line("The amount of dependency changes were to long for this comment. Please check out the full report")
477475
md.new_line(f"To view more information about this report checkout the [Full Report]({diff.diff_url})")
@@ -498,40 +496,63 @@ def create_remove_line(diff: Diff, md: MdUtils) -> MdUtils:
498496
def create_added_table(diff: Diff, md: MdUtils) -> MdUtils:
499497
"""
500498
Create the Added packages table for the Dependency Overview template
501-
:param diff: Diff - Diff report with the Added packages information
499+
:param diff: Diff - Diff report with the Added package information
502500
:param md: MdUtils - Main markdown variable
503501
:return:
504502
"""
503+
# Table column headers
505504
overview_table = [
505+
"Diff",
506506
"Package",
507-
"Direct",
508-
"Capabilities",
509-
"Transitives",
510-
"Size",
511-
"Author"
507+
"Supply Chain<br/>Security",
508+
"Vulnerability",
509+
"Quality",
510+
"Maintenance",
511+
"License"
512512
]
513513
num_of_overview_columns = len(overview_table)
514+
514515
count = 0
515516
for added in diff.new_packages:
516-
added: Purl
517-
package_url = Messages.create_purl_link(added)
518-
capabilities = ", ".join(added.capabilities)
517+
added: Purl # Ensure `added` has scores and relevant attributes.
518+
519+
package_url = f"[{added.purl}]({added.url})"
520+
diff_badge = f"[![+](https://github-app-statics.socket.dev/diff-added.svg)]({added.url})"
521+
522+
# Scores dynamically converted to badge URLs and linked
523+
def score_to_badge(score):
524+
score_percent = int(score * 100) # Convert to integer percentage
525+
return f"[![{score_percent}](https://github-app-statics.socket.dev/score-{score_percent}.svg)]({added.url})"
526+
527+
# Generate badges for each score type
528+
supply_chain_risk_badge = score_to_badge(added.scores.get("supplyChain", 100))
529+
vulnerability_badge = score_to_badge(added.scores.get("vulnerability", 100))
530+
quality_badge = score_to_badge(added.scores.get("quality", 100))
531+
maintenance_badge = score_to_badge(added.scores.get("maintenance", 100))
532+
license_badge = score_to_badge(added.scores.get("license", 100))
533+
534+
# Add the row for this package
519535
row = [
536+
diff_badge,
520537
package_url,
521-
added.direct,
522-
capabilities,
523-
added.transitives,
524-
f"{added.size} KB",
525-
added.author_url
538+
supply_chain_risk_badge,
539+
vulnerability_badge,
540+
quality_badge,
541+
maintenance_badge,
542+
license_badge
526543
]
527544
overview_table.extend(row)
528-
count += 1
529-
num_of_overview_rows = count + 1
545+
count += 1 # Count total packages
546+
547+
# Calculate total rows for table
548+
num_of_overview_rows = count + 1 # Include header row
549+
550+
# Generate Markdown table
530551
md.new_table(
531552
columns=num_of_overview_columns,
532553
rows=num_of_overview_rows,
533554
text=overview_table,
534-
text_align="left"
555+
text_align="center"
535556
)
536557
return md
537558

0 commit comments

Comments
 (0)