Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
2.0 kB · 66 lines
Shell
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#!/usr/bin/env nix-shell#!nix-shell -i bash -p jq parallel
# Example how to work with the `lib.maintainers` attrset.# Can be used to check whether all user handles are still valid.
set -o errexit -o noclobber -o nounset -o pipefailshopt -s failglob inherit_errexit
function checkCommits { local ret status tmp user user="$1" tmp=$(mktemp) curl --silent -w "%{http_code}" \ "https://github.com/NixOS/nixpkgs/commits?author=$user" \ > "$tmp" # the last line of tmp contains the http status status=$(tail -n1 "$tmp") ret= case $status in 200) if <"$tmp" grep -i "no commits found" > /dev/null; then ret=1 else ret=0 fi ;; # because of github’s hard request limits, this can take some time 429) sleep 2 printf "." checkCommits "$user" ret=$? ;; *) printf "BAD STATUS: $(tail -n1 "$tmp") for %s\n" "$user"; ret=1 ret=1 ;; esac rm "$tmp" return $ret}export -f checkCommits
function checkUser { local user="$1" local status= status="$(curl --silent --head "https://github.com/${user}" | grep Status)" # checks whether a user handle can be found on github if [[ "$status" =~ 404 ]]; then printf "%s\t\t\t\t%s\n" "$status" "$user" # checks whether the user handle has any nixpkgs commits elif checkCommits "$user"; then printf "OK!\t\t\t\t%s\n" "$user" else printf "No Commits!\t\t\t%s\n" "$user" fi}export -f checkUser
# output the maintainers set as json# and filter out the github username of each maintainer (if it exists)# then check some at the same timenix-instantiate -A lib.maintainers --eval --strict --json \ | jq -r '.[]|.github|select(.)' \ | parallel -j5 checkUser
# To check some arbitrary users:# parallel -j100 checkUser ::: "eelco" "profpatsch" "Profpatsch" "a"