-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinviteUsers.js
More file actions
33 lines (27 loc) · 954 Bytes
/
inviteUsers.js
File metadata and controls
33 lines (27 loc) · 954 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const { Octokit } = require("@octokit/rest");
require("dotenv").config();
const fs = require("fs");
const octokit = new Octokit({ auth: process.env.GITHUB_TOKEN });
const org = process.env.GITHUB_ORG;
// Load GitHub usernames from file
const usernames = require("./github_usernames.json");
const failedInvites = [];
async function inviteUsers() {
for (const username of usernames) {
try {
await octokit.rest.orgs.setMembershipForUser({
org,
username,
role: "member", // can also be "admin"
});
console.log(`✅ Invited ${username}`);
} catch (err) {
console.error(`❌ Failed to invite ${username}: ${err.message}`);
failedInvites.push({ username, error: err.message });
}
}
// Save failed invites to file
fs.writeFileSync("failed_invites.json", JSON.stringify(failedInvites, null, 2));
console.log("✍️ Failed invites saved to failed_invites.json");
}
inviteUsers();