Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add the valuable parts from org-tools so we can prune the project. #4

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions org-scripts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# org-scripts

This directory contains scripts to help with org management.

Set the environment variable `GITHUB_TOKEN` to:
```
export GITHUB_TOKEN="token"
```
17 changes: 17 additions & 0 deletions org-scripts/apply-teams.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

# TODO Make the mapping more dynamic...
# TEAMS=`./githubapi-get_json.sh $GITHUB_TOKEN /orgs/xmidt-org/teams | jq -r -j ".[] | .name, \"=\", .id, \"\n\""`
TEAMS='admins=3322421 writers=3307585'

REPOS=`./githubapi-get_json.sh $GITHUB_TOKEN /orgs/xmidt-org/repos|jq -r ".[] | .name "`

WRITER_ID=3307585
ADMIN_ID=3322421

for name in $REPOS
do
echo "Updating $name"
curl -X PUT -H "Authorization: token $GITHUB_TOKEN" -s -H "Accept: application/vnd.github.hellcat-preview+json" https://api.github.com/teams/$WRITER_ID/repos/xmidt-org/$name -d '{"permission": "push" }'
curl -X PUT -H "Authorization: token $GITHUB_TOKEN" -s -H "Accept: application/vnd.github.hellcat-preview+json" https://api.github.com/teams/$ADMIN_ID/repos/xmidt-org/$name -d '{"permission": "admin" }'
done
41 changes: 41 additions & 0 deletions org-scripts/githubapi-get_json.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/bash

set -e

if [ ${#@} -lt 2 ]; then
echo "usage: $0 [your github token] [REST expression]"
exit 1;
fi

GITHUB_TOKEN=$1
GITHUB_API_REST=$2

GITHUB_API_HEADER_ACCEPT="Accept: application/vnd.github.v3+json"

temp=`basename $0`
TMPFILE=`mktemp /tmp/${temp}.XXXXXX` || exit 1

function rest_call {
curl -s $1 -H "${GITHUB_API_HEADER_ACCEPT}" -H "Authorization: token $GITHUB_TOKEN" | sed -e 's/^\[$//g' -e 's/^\]$/,/g' >> $TMPFILE
}

# single page result-s (no pagination), have no Link: section, the grep result is empty
last_page=`curl -s -I "https://api.github.com${GITHUB_API_REST}" -H "${GITHUB_API_HEADER_ACCEPT}" -H "Authorization: token $GITHUB_TOKEN" | grep '^Link:' | sed -e 's/^Link:.*page=//g' -e 's/>.*$//g'`

# does this result use pagination?
if [ -z "$last_page" ]; then
# no - this result has only one page
rest_call "https://api.github.com${GITHUB_API_REST}"
else
# yes - this result is on multiple pages
for p in `seq 1 $last_page`; do
rest_call "https://api.github.com${GITHUB_API_REST}?page=$p"
done
fi

line_counter=`wc -l $TMPFILE | sed -e 's/[/a-zA-Z].*$//g'`
#echo "TMPFILE:$TMPFILE"
#echo "line_counter:$line_counter"
echo "["
head -n $(($line_counter - 1)) $TMPFILE
echo "]"