Skip to content

Instantly share code, notes, and snippets.

@femto113
Created February 17, 2020 06:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save femto113/ef9162d670def84b3c684d2d30588037 to your computer and use it in GitHub Desktop.
Save femto113/ef9162d670def84b3c684d2d30588037 to your computer and use it in GitHub Desktop.
var fs = require("fs");
var Github = require("github");
var package = JSON.parse(fs.readFileSync('./package.json'));
var username_password_user_repo = package.repository.url.match(/(?:https?:\/\/|git)(?:([^:@\/]+)(?::([^@]+))?)?@?github.com[:\/]([^:\/.]+)\/([^\/.]+).git$/).slice(1);
var github = new Github({
// required
version: "3.0.0",
// optional
timeout: 5000
});
if (username_password_user_repo[0]) {
github.authenticate({
type: "basic",
username: username_password_user_repo[0],
password: username_password_user_repo[1],
});
}
github.repos.getCollaborators({ user: username_password_user_repo[2] , repo: username_password_user_repo[3] }, function (err, collaborators) {
if (err) {
console.log("unable to get collaborators:", err);
process.exit(1);
}
if (collaborators.length == 0) {
console.log("no collaborators found");
process.exit(2);
}
for (var i = 0; i < collaborators.length; i++) {
var user = collaborators[i].login;
github.user.getKeysFromUser({ user: user }, function (user, err, keys) {
for (var j = 0; j < keys.length; j++) {
console.log(j);
var key = keys[j].key;
var comment = user;
if (keys.length > 1) comment += " (" + (j + 1) + " of " + keys.length + ")";
var authorized_keys = fs.createWriteStream(process.env.HOME + '/.ssh/authorized_keys', { flags: 'a', mode: 0600 }); // TODO: replace . with ~/.ssh
authorized_keys.end(key + " " + comment + "\n", 'utf8');
console.log('added %s', comment);
}
}.bind(null, user));
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment