Skip to content

Commit 333268b

Browse files
Parse debian maintainer names and emails
Signed-off-by: Ayan Sinha Mahapatra <ayansmahapatra@gmail.com>
1 parent b60d78f commit 333268b

File tree

13 files changed

+96
-74
lines changed

13 files changed

+96
-74
lines changed

src/packagedcode/debian.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -646,12 +646,14 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No
646646

647647
maintainer = debian_data.get('maintainer')
648648
if maintainer:
649-
party = models.Party(role='maintainer', name=maintainer)
649+
maintainer_name, maintainer_email = parse_debian_maintainers(maintainer)
650+
party = models.Party(role='maintainer', name=maintainer_name, email=maintainer_email)
650651
parties.append(party)
651652

652653
orig_maintainer = debian_data.get('original_maintainer')
653654
if orig_maintainer:
654-
party = models.Party(role='original_maintainer', name=orig_maintainer)
655+
maintainer_name, maintainer_email = parse_debian_maintainers(orig_maintainer)
656+
party = models.Party(role='maintainer', name=maintainer_name, email=maintainer_email)
655657
parties.append(party)
656658

657659
keywords = []
@@ -711,6 +713,26 @@ def build_package_data(debian_data, datasource_id, package_type='deb', distro=No
711713
)
712714

713715

716+
def parse_debian_maintainers(maintainer):
717+
"""
718+
Get name and email values from a debian maintainer string.
719+
720+
Example string:
721+
Debian systemd Maintainers <pkg-systemd-maintainers@lists.alioth.debian.org>
722+
"""
723+
email_wrappers = ["<", ">"]
724+
has_email = "@" in maintainer and all([
725+
True
726+
for char in email_wrappers
727+
if char in maintainer
728+
])
729+
if not has_email:
730+
return maintainer, None
731+
732+
name, _, email = maintainer.rpartition("<")
733+
return name.rstrip(" "), email.rstrip(">")
734+
735+
714736
def populate_debian_namespace(packages):
715737
"""
716738
For an iterable of debian `packages`, populate the

tests/packagedcode/data/debian/basic-rootfs-expected.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
{
1717
"type": null,
1818
"role": "maintainer",
19-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
20-
"email": null,
19+
"name": "Ubuntu Developers",
20+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
2121
"url": null
2222
}
2323
],
@@ -209,8 +209,8 @@
209209
{
210210
"type": null,
211211
"role": "maintainer",
212-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
213-
"email": null,
212+
"name": "Ubuntu Developers",
213+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
214214
"url": null
215215
}
216216
],
@@ -844,8 +844,8 @@
844844
{
845845
"type": null,
846846
"role": "maintainer",
847-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
848-
"email": null,
847+
"name": "Ubuntu Developers",
848+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
849849
"url": null
850850
}
851851
],
@@ -902,8 +902,8 @@
902902
{
903903
"type": null,
904904
"role": "maintainer",
905-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
906-
"email": null,
905+
"name": "Ubuntu Developers",
906+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
907907
"url": null
908908
}
909909
],

tests/packagedcode/data/debian/basic/status.expected

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
{
1616
"type": null,
1717
"role": "maintainer",
18-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
19-
"email": null,
18+
"name": "Ubuntu Developers",
19+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
2020
"url": null
2121
}
2222
],
@@ -73,8 +73,8 @@
7373
{
7474
"type": null,
7575
"role": "maintainer",
76-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
77-
"email": null,
76+
"name": "Ubuntu Developers",
77+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
7878
"url": null
7979
}
8080
],
@@ -131,8 +131,8 @@
131131
{
132132
"type": null,
133133
"role": "maintainer",
134-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
135-
"email": null,
134+
"name": "Ubuntu Developers",
135+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
136136
"url": null
137137
}
138138
],
@@ -189,8 +189,8 @@
189189
{
190190
"type": null,
191191
"role": "maintainer",
192-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
193-
"email": null,
192+
"name": "Ubuntu Developers",
193+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
194194
"url": null
195195
}
196196
],
@@ -247,8 +247,8 @@
247247
{
248248
"type": null,
249249
"role": "maintainer",
250-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
251-
"email": null,
250+
"name": "Ubuntu Developers",
251+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
252252
"url": null
253253
}
254254
],
@@ -303,8 +303,8 @@
303303
{
304304
"type": null,
305305
"role": "maintainer",
306-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
307-
"email": null,
306+
"name": "Ubuntu Developers",
307+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
308308
"url": null
309309
}
310310
],

tests/packagedcode/data/debian/control.expected.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@
137137
{
138138
"type": null,
139139
"role": "maintainer",
140-
"name": "Bdale Garbee <bdale@gag.com>",
141-
"email": null,
140+
"name": "Bdale Garbee",
141+
"email": "bdale@gag.com",
142142
"url": null
143143
}
144144
],

tests/packagedcode/data/debian/debian-container-layer.tar.xz.get-installed-expected.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
{
1616
"type": null,
1717
"role": "maintainer",
18-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
19-
"email": null,
18+
"name": "Ubuntu Developers",
19+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
2020
"url": null
2121
}
2222
],
@@ -442,8 +442,8 @@
442442
{
443443
"type": null,
444444
"role": "maintainer",
445-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
446-
"email": null,
445+
"name": "Ubuntu Developers",
446+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
447447
"url": null
448448
}
449449
],

tests/packagedcode/data/debian/debian-container-layer.tar.xz.scan-expected.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
{
1717
"type": null,
1818
"role": "maintainer",
19-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
20-
"email": null,
19+
"name": "Ubuntu Developers",
20+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
2121
"url": null
2222
}
2323
],
@@ -209,8 +209,8 @@
209209
{
210210
"type": null,
211211
"role": "maintainer",
212-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
213-
"email": null,
212+
"name": "Ubuntu Developers",
213+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
214214
"url": null
215215
}
216216
],
@@ -858,8 +858,8 @@
858858
{
859859
"type": null,
860860
"role": "maintainer",
861-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
862-
"email": null,
861+
"name": "Ubuntu Developers",
862+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
863863
"url": null
864864
}
865865
],
@@ -916,8 +916,8 @@
916916
{
917917
"type": null,
918918
"role": "maintainer",
919-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
920-
"email": null,
919+
"name": "Ubuntu Developers",
920+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
921921
"url": null
922922
}
923923
],

tests/packagedcode/data/debian/dsc_files/adduser_3.118+deb11u1.dsc.expected.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
{
1717
"type": null,
1818
"role": "maintainer",
19-
"name": "Debian Adduser Developers <adduser@packages.debian.org>",
20-
"email": null,
19+
"name": "Debian Adduser Developers",
20+
"email": "adduser@packages.debian.org",
2121
"url": null
2222
}
2323
],
@@ -81,8 +81,8 @@
8181
{
8282
"type": null,
8383
"role": "maintainer",
84-
"name": "Debian Adduser Developers <adduser@packages.debian.org>",
85-
"email": null,
84+
"name": "Debian Adduser Developers",
85+
"email": "adduser@packages.debian.org",
8686
"url": null
8787
}
8888
],

tests/packagedcode/data/debian/end-to-end.tgz.expected.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
{
1717
"type": null,
1818
"role": "maintainer",
19-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
20-
"email": null,
19+
"name": "Ubuntu Developers",
20+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
2121
"url": null
2222
}
2323
],
@@ -298,8 +298,8 @@
298298
{
299299
"type": null,
300300
"role": "maintainer",
301-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
302-
"email": null,
301+
"name": "Ubuntu Developers",
302+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
303303
"url": null
304304
}
305305
],

tests/packagedcode/data/debian/mini-status/status.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
{
1616
"type": null,
1717
"role": "maintainer",
18-
"name": "Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>",
19-
"email": null,
18+
"name": "Ubuntu Developers",
19+
"email": "ubuntu-devel-discuss@lists.ubuntu.com",
2020
"url": null
2121
}
2222
],

tests/packagedcode/data/debian/status-with-source/status.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
{
1616
"type": null,
1717
"role": "maintainer",
18-
"name": "util-linux packagers <util-linux@packages.debian.org>",
19-
"email": null,
18+
"name": "util-linux packagers",
19+
"email": "util-linux@packages.debian.org",
2020
"url": null
2121
}
2222
],

0 commit comments

Comments
 (0)