Fetch staff members from GitHub org

Joseph T Lyons created

Change summary

script/get-preview-channel-changes | 47 ++++++++++++++-----------------
1 file changed, 21 insertions(+), 26 deletions(-)

Detailed changes

script/get-preview-channel-changes 🔗

@@ -9,30 +9,30 @@ const PULL_REQUEST_API_URL =
   "https://api.github.com/repos/zed-industries/zed/pulls";
 const DIVIDER = "-".repeat(80);
 
-// Maintain list manually, as our GitHub organization has community members in it.
-const STAFF_MEMBERS = new Set([
-  "as-cii",
-  "bennetbo",
-  "conradirwin",
-  "danilo-leal",
-  "iamnbutler",
-  "josephtlyons",
-  "jvmncs",
-  "maxbrunsfeld",
-  "maxdeviant",
-  "mikayla-maki",
-  "nathansobo",
-  "notpeter",
-  "osiewicz",
-  "rgbkrk",
-  "rtfeldman",
-  "someonetoignore",
-  "thorstenball",
-]);
-
 main();
 
 async function main() {
+  const STAFF_MEMBERS = new Set(
+    (
+      await (
+        await fetch(
+          "https://api.github.com/orgs/zed-industries/teams/staff/members",
+          {
+            headers: {
+              Authorization: `token ${GITHUB_ACCESS_TOKEN}`,
+              Accept: "application/vnd.github+json",
+            },
+          },
+        )
+      ).json()
+    ).map(({ login }) => login.toLowerCase()),
+  );
+
+  const isStaffMember = (githubHandle) => {
+    githubHandle = githubHandle.toLowerCase();
+    return STAFF_MEMBERS.has(githubHandle);
+  };
+
   // Get the last two preview tags
   const [newTag, oldTag] = execFileSync(
     "git",
@@ -142,8 +142,3 @@ function getPullRequestNumbers(oldTag, newTag) {
 
   return pullRequestNumbers;
 }
-
-function isStaffMember(githubHandle) {
-  githubHandle = githubHandle.toLowerCase();
-  return STAFF_MEMBERS.has(githubHandle);
-}