Skip to content

Instantly share code, notes, and snippets.

@jonstorer
Last active August 29, 2015 13:57
Show Gist options
  • Save jonstorer/9538288 to your computer and use it in GitHub Desktop.
Save jonstorer/9538288 to your computer and use it in GitHub Desktop.
fetch all keys
node_modules/*
keys
#! /usr/bin/env coffee
#
# HOW TO USE:
#
# ORG=my-org TOKEN=my-token ./index.coffee > ssh_keys
#
organization = process.env.ORG
token = process.env.TOKEN
request = require('request')
async = require('async')
calls = []
base_url = 'https://api.github.com'
params =
headers:
'User-Agent': 'Authroized Keys Generator'
qs:
oauth_token: token
# Pivotal 847672
# Shake Engineering 517688
# Consultants 808621
teams = [
847672
517688
808621
]
fetchMembers = (id, done) ->
request.get "#{base_url}/teams/#{id}/members", params, (err, response) ->
return done err if err
done null, (member.login for member in JSON.parse(response.body))
fetchKeys = (login, done) ->
request.get "#{base_url}/users/#{login}/keys", params, (err, response) ->
res = {}
res[login] = (row.key for row in JSON.parse(response.body))
done null, res
async.map teams, fetchMembers, (err, teams) ->
members = {}
members[member] = member for member in [].concat.apply([], teams)
async.map Object.keys(members), fetchKeys, (err, results) ->
console.log '### THIS FILE IS AUTOMATICALLY GENERATED'
for result in results
for login, keys of result
console.log ''
console.log "### #{login}"
console.log key for key in keys
{
"name": "github_keys",
"version": "0.0.0",
"description": "",
"main": "index.coffee",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"homepage": "https://gist.github.com/9538288",
"repository": {
"type": "git",
"url": "https://gist.github.com/9538288.git"
},
"author": "",
"license": "ISC",
"bugs": {
"url": "https://gist.github.com/9538288"
},
"dependencies": {
"async": "0.2.9",
"coffee-script": "1.6.3",
"request": "2.34.0"
}
}
@cryptojuice
Copy link

👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment