diff --git a/maintainers/scripts/check-maintainer-github-handles.sh b/maintainers/scripts/check-maintainer-github-handles.sh index e389fde7d8aa..879a2e452cb3 100755 --- a/maintainers/scripts/check-maintainer-github-handles.sh +++ b/maintainers/scripts/check-maintainer-github-handles.sh @@ -6,18 +6,61 @@ set -e -# checks whether a user handle can be found on github +# nixpkgs='' +# if [ -n "$1" ]; then + +function checkCommits { + local user="$1" + local 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 + local status=$(tail -n1 "$tmp") + local 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)" - printf "%s\t\t\t\t%s\n" "$status" "$user" + # 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 100 at the same time +# then check some at the same time nix-instantiate -A lib.maintainers --eval --strict --json \ - | jq -r '.[]|.github' \ - | parallel -j100 checkUser + | jq -r '.[]|.github|select(.)' \ + | parallel -j5 checkUser + +# parallel -j100 checkUser ::: "eelco" "profpatsch" "Profpatsch" "a"