Add list-projs script
This commit is contained in:
43
git-hangman-lab/scripts/list-projs
Executable file
43
git-hangman-lab/scripts/list-projs
Executable file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
GIT_BASE="https://git.hangman-lab.top/api/v1"
|
||||||
|
|
||||||
|
USER="$(secret-mgr get-username --key git)"
|
||||||
|
TOKEN="$(secret-mgr get-secret --key git)"
|
||||||
|
|
||||||
|
if [[ -z "$USER" || -z "$TOKEN" ]]; then
|
||||||
|
echo "Error: missing git credentials from secret-mgr" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# List all repos the user has access to (owned + collaborated)
|
||||||
|
repos=$(curl -s -u "$USER:$TOKEN" "$GIT_BASE/user/repos?per_page=100" 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ -z "$repos" ]]; then
|
||||||
|
echo "| proj-name | owner | url | can-write |"
|
||||||
|
echo "|------------|-------|-----|-----------|"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "| proj-name | owner | url | can-write |"
|
||||||
|
echo "|------------|-------|-----|-----------|"
|
||||||
|
|
||||||
|
echo "$repos" | python3 -c "
|
||||||
|
import sys, json
|
||||||
|
|
||||||
|
try:
|
||||||
|
data = json.load(sys.stdin)
|
||||||
|
if not isinstance(data, list):
|
||||||
|
data = [data]
|
||||||
|
except:
|
||||||
|
print('Error parsing response')
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
for r in data:
|
||||||
|
name = r.get('name', '')
|
||||||
|
owner = r.get('owner', {}).get('login', '')
|
||||||
|
url = r.get('html_url', '')
|
||||||
|
can_write = 'yes' if r.get('permissions', {}).get('push', False) else 'no'
|
||||||
|
print(f'| {name} | {owner} | {url} | {can_write} |')
|
||||||
|
" 2>/dev/null || echo "| (error parsing repos) | | | |"
|
||||||
Reference in New Issue
Block a user