diff --git a/seirl/ase-vault-test/get_all_trees.sh b/seirl/ase-vault-test/get_all_trees.sh new file mode 100755 index 0000000..0990c19 --- /dev/null +++ b/seirl/ase-vault-test/get_all_trees.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +github_query() { + query=$( cat ) + + jq -n --arg v "$query" '{"query": $v}' \ + | curl -s -H "Authorization: bearer $( cat ~/.github_access_token )" \ + -X POST -d @- https://api.github.com/graphql +} + +extract_trees () { + jq --raw-output '.data.search.edges[].node.ref.target.tree.oid // empty' +} + +cd "$( dirname $0 )" + +tmpf=$( mktemp --suffix github-graphql-search ) +cursor="" + +for i in $( seq 1 5 ); do + echo >&2 "Requesting page $i..." + cat github_search.graphql \ + | sed 's/\(search(.\+\))/\1'"$cursor)/" \ + | github_query \ + > "$tmpf" + extract_trees < "$tmpf" + hasNext=$( jq --raw-output '.data.search.pageInfo.hasNextPage' "$tmpf" ) + if [ "$hasNext" != "true" ]; then + break; + fi + cursor=$( jq --raw-output '.data.search.pageInfo.startCursor' "$tmpf" ) + cursor=", after:\"$cursor\"" +done + +rm "$tmpf" diff --git a/seirl/ase-vault-test/github_query.sh b/seirl/ase-vault-test/github_query.sh new file mode 100755 index 0000000..5882c58 --- /dev/null +++ b/seirl/ase-vault-test/github_query.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +query=$( cat ) + +jq -n --arg v "$query" '{"query": $v}' | \ + curl -s -H "Authorization: bearer $( cat ~/.github_access_token )" \ + -X POST -d @- https://api.github.com/graphql diff --git a/seirl/ase-vault-test/github_search.graphql b/seirl/ase-vault-test/github_search.graphql new file mode 100644 index 0000000..5a7fd28 --- /dev/null +++ b/seirl/ase-vault-test/github_search.graphql @@ -0,0 +1,28 @@ +{ + search(query: "language:c size:5000..12000 created:>=2010-01-01", type: REPOSITORY, first: 100) { + repositoryCount + pageInfo { + startCursor + endCursor + hasNextPage + hasPreviousPage + } + edges { + node { + ... on Repository { + name + url + ref(qualifiedName: "master") { + target { + ... on Commit { + tree { + oid + } + } + } + } + } + } + } + } +}