1use std::collections::HashMap;
3use url::Url;
4
5lazy_static::lazy_static! {
6static ref MAINTAINER_EMAIL_MAP: HashMap<&'static str, &'static str> = maplit::hashmap! {
7 "pkg-javascript-devel@lists.alioth.debian.org" => "js-team",
8 "python-modules-team@lists.alioth.debian.org" => "python-team/modules",
9 "python-apps-team@lists.alioth.debian.org" => "python-team/applications",
10 "debian-science-maintainers@lists.alioth.debian.org" => "science-team",
11 "pkg-perl-maintainers@lists.alioth.debian.org" =>
12 "perl-team/modules/packages",
13 "pkg-java-maintainers@lists.alioth.debian.org" => "java-team",
14 "pkg-ruby-extras-maintainers@lists.alioth.debian.org" => "ruby-team",
15 "pkg-clamav-devel@lists.alioth.debian.org" => "clamav-team",
16 "pkg-go-maintainers@lists.alioth.debian.org" => "go-team/packages",
17 "pkg-games-devel@lists.alioth.debian.org" => "games-team",
18 "pkg-telepathy-maintainers@lists.alioth.debian.org" => "telepathy-team",
19 "debian-fonts@lists.debian.org" => "fonts-team",
20 "pkg-gnustep-maintainers@lists.alioth.debian.org" => "gnustep-team",
21 "pkg-gnome-maintainers@lists.alioth.debian.org" => "gnome-team",
22 "pkg-multimedia-maintainers@lists.alioth.debian.org" => "multimedia-team",
23 "debian-ocaml-maint@lists.debian.org" => "ocaml-team",
24 "pkg-php-pear@lists.alioth.debian.org" => "php-team/pear",
25 "pkg-mpd-maintainers@lists.alioth.debian.org" => "mpd-team",
26 "pkg-cli-apps-team@lists.alioth.debian.org" => "dotnet-team",
27 "pkg-mono-group@lists.alioth.debian.org" => "dotnet-team",
28 "team+python@tracker.debian.org" => "python-team/packages",
29};
30}
31
32pub fn guess_repository_url(package: &str, maintainer_email: &str) -> Option<Url> {
41 let team_name = if maintainer_email.ends_with("@debian.org") {
42 maintainer_email.split('@').next().unwrap()
43 } else if let Some(team_name) = MAINTAINER_EMAIL_MAP.get(maintainer_email) {
44 team_name
45 } else {
46 return None;
47 };
48
49 format!("https://salsa.debian.org/{}/{}.git", team_name, package)
50 .parse()
51 .ok()
52}
53
54#[cfg(test)]
55mod guess_repository_url_tests {
56 use super::*;
57
58 #[test]
59 fn test_unknown() {
60 assert_eq!(
61 None,
62 guess_repository_url("blah", "unknown-team@lists.alioth.debian.org")
63 );
64 }
65
66 #[test]
67 fn test_individual() {
68 assert_eq!(
69 Some(
70 "https://salsa.debian.org/jelmer/lintian-brush.git"
71 .parse()
72 .unwrap()
73 ),
74 guess_repository_url("lintian-brush", "jelmer@debian.org")
75 );
76 }
77
78 #[test]
79 fn test_team() {
80 assert_eq!(
81 Some(
82 "https://salsa.debian.org/js-team/node-blah.git"
83 .parse()
84 .unwrap()
85 ),
86 guess_repository_url("node-blah", "pkg-javascript-devel@lists.alioth.debian.org")
87 );
88 }
89}