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) {