Functions/Assert-GitHubRateLimits.ps1

Function Assert-GitHubRateLimits {

  Param(
      [string] $threshold = 2
  )

  $resources = $(gh api -X GET /rate_limit | ConvertFrom-Json).resources
  $keys = $resources.psobject.Properties.Name
  foreach($key in $keys){
      $item = $resources.$key
      Write-Host "$key has $($item.remaining) remaining"
      if($item.remaining -gt $threshold){
      continue
      }

      $rateLimitReset = $item.reset
      $rateLimitResetAt = [datetime]::new(1970, 1, 1, 0, 0, 0, 0, [DateTimeKind]::Utc).AddSeconds($rateLimitReset)
      $wait = $rateLimitResetAt - [datetime]::UtcNow
      Write-Host "Waiting $($wait.TotalSeconds) seconds for rate limit to reset for $key"
      Start-Sleep -Seconds $wait.TotalSeconds
      Start-Sleep -Seconds 20
  }


}