From 60de93354b687fe2590996398b3f21cdd0f4917f Mon Sep 17 00:00:00 2001 From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com> Date: Tue, 7 Mar 2023 16:25:22 +0000 Subject: [PATCH 1/3] Attempt to check public org membership before complaining about signoff. --- tools/danger/dangerfile.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/tools/danger/dangerfile.js b/tools/danger/dangerfile.js index 2ed4067ee2..08131b9bd3 100644 --- a/tools/danger/dangerfile.js +++ b/tools/danger/dangerfile.js @@ -88,7 +88,25 @@ const allowList = [ "yostyle", ] -const requiresSignOff = !allowList.includes(user) +// We ignore signoff requirements for employees of Element +// as copyright assignment is covered by our employee contracts. + +var memberOfElement + +try { + github.api.rest.orgs.checkPublicMembership({ + org: "vector-im", + username: user + }) + memberOfElement = true +} catch (err) { + // Raises an error if 404 is returned = not member + memberOfElement = false +} + + + +const requiresSignOff = !allowList.includes(user) || !memberOfElement if (requiresSignOff) { const hasPRBodySignOff = pr.body.includes(signOff) From 893c95fd77c8a6f811ca6b483afa93c54b53523f Mon Sep 17 00:00:00 2001 From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com> Date: Tue, 4 Apr 2023 12:48:54 +0100 Subject: [PATCH 2/3] Fix --- tools/danger/dangerfile.js | 51 ++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/tools/danger/dangerfile.js b/tools/danger/dangerfile.js index 08131b9bd3..eb9c066b57 100644 --- a/tools/danger/dangerfile.js +++ b/tools/danger/dangerfile.js @@ -88,27 +88,8 @@ const allowList = [ "yostyle", ] -// We ignore signoff requirements for employees of Element -// as copyright assignment is covered by our employee contracts. - -var memberOfElement - -try { - github.api.rest.orgs.checkPublicMembership({ - org: "vector-im", - username: user - }) - memberOfElement = true -} catch (err) { - // Raises an error if 404 is returned = not member - memberOfElement = false -} - - - -const requiresSignOff = !allowList.includes(user) || !memberOfElement - -if (requiresSignOff) { +function signoff_needed(reason) { + message("Sign-off required, " + reason) const hasPRBodySignOff = pr.body.includes(signOff) const hasCommitSignOff = danger.git.commits.every(commit => commit.message.includes(signOff)) if (!hasPRBodySignOff && !hasCommitSignOff) { @@ -116,6 +97,34 @@ if (requiresSignOff) { } } +function signoff_unneeded(reason) { + message("Sign-off not required, " + reason) +} + +// Somewhat awkward phrasing, dangerfile is not in an async context. +if (allowList.includes(user)) { + signoff_unneeded("allow-list") +} else { + github.api.rest.orgs.checkMembershipForUser({ + org: "vector-im", + username: user, + }).then((result) => { + if (result.status == 204) { + signoff_unneeded("org-member") + } + else { + signoff_needed("not-org-member") + } + }).catch((error) => { + if (error.response.status == 404) { + signoff_needed("not-org-member"); + } else { + console.log(error); signoff_needed("error") + } + }) +} + + // Check for screenshots on view changes const hasChangedViews = editedFiles.filter(file => file.includes("/layout")).length > 0 if (hasChangedViews) { From 88c0306d7dc41eb04809108a4e69d2944a324f7d Mon Sep 17 00:00:00 2001 From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com> Date: Tue, 4 Apr 2023 12:57:43 +0100 Subject: [PATCH 3/3] Check for team membership, not org membership --- tools/danger/dangerfile.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tools/danger/dangerfile.js b/tools/danger/dangerfile.js index eb9c066b57..a7e767f25a 100644 --- a/tools/danger/dangerfile.js +++ b/tools/danger/dangerfile.js @@ -105,19 +105,24 @@ function signoff_unneeded(reason) { if (allowList.includes(user)) { signoff_unneeded("allow-list") } else { - github.api.rest.orgs.checkMembershipForUser({ +// github.api.rest.orgs.checkMembershipForUser({ +// org: "vector-im", +// username: user, +// }).then((result) => { + github.api.rest.teams.getMembershipForUserInOrg({ org: "vector-im", + team_slug: "vector-core", username: user, }).then((result) => { - if (result.status == 204) { - signoff_unneeded("org-member") + if (result.status == 204 || result.status == 200) { + signoff_unneeded("team-member") } else { - signoff_needed("not-org-member") + signoff_needed("not-team-member") } }).catch((error) => { if (error.response.status == 404) { - signoff_needed("not-org-member"); + signoff_needed("not-team-member"); } else { console.log(error); signoff_needed("error") }