Description
This feature is about adding a good failure message for when the tool quits on the user in this situation:
- using a private repository
- and a Personal Access Token, which lacks the
repos
permission
When having mis-configured github-changelog-generator, with a token with the wrong permissions (it needs repos
to work), the error output is:
/Users/totoro/.rvm/gems/ruby-2.3.0/gems/github_api-0.13.1/lib/github_api/response/raise_error.rb:14:in `on_complete': GET https://api.github.com/repos/mysecret/private-repo/tags: 404 Not Found (Github::Error::NotFound)
from /Users/totoro/.rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/response.rb:9:in `block in call'
from /Users/totoro/.rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/response.rb:57:in `on_complete'
from /Users/totoro/.rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/response.rb:8:in `call'
from /Users/totoro/.rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/response.rb:8:in `call'
from /Users/totoro/.rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/response.rb:8:in `call'
from /Users/totoro/.rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/response.rb:8:in `call'
from /Users/totoro/.rvm/gems/ruby-2.3.0/gems/faraday-0.9.2/lib/faraday/request/url_encoded.rb:15:in `call'
This 404 from the GitHub API is an error which stops execution, and we could present a more informative error message, which speculated on possible causes and showed a link to the docs on making a token with private repo permissions.
Update for OctoKit: New error output, still unfriendly.
/Users/olle/.gem/ruby/2.4.0/gems/octokit-4.7.0/lib/octokit/response/raise_error.rb:16:in `on_complete': GET https://api.github.com/repos/ecraft/ecraft-deploy/tags?per_page=100: 404 - Not Found // See: https://developer.github.com/v3/repos/#list-tags (Octokit::NotFound)
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-0.13.1/lib/faraday/response.rb:9:in `block in call'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-0.13.1/lib/faraday/response.rb:61:in `on_complete'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-0.13.1/lib/faraday/response.rb:8:in `call'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-http-cache-2.0.0/lib/faraday/http_cache.rb:290:in `fetch'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-http-cache-2.0.0/lib/faraday/http_cache.rb:195:in `process'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-http-cache-2.0.0/lib/faraday/http_cache.rb:142:in `call!'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-http-cache-2.0.0/lib/faraday/http_cache.rb:115:in `call'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-0.13.1/lib/faraday/rack_builder.rb:141:in `build_response'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-0.13.1/lib/faraday/connection.rb:387:in `run_request'
from /Users/olle/.gem/ruby/2.4.0/gems/faraday-0.13.1/lib/faraday/connection.rb:137:in `get'
from /Users/olle/.gem/ruby/2.4.0/gems/sawyer-0.8.1/lib/sawyer/agent.rb:94:in `call'
from /Users/olle/.gem/ruby/2.4.0/gems/octokit-4.7.0/lib/octokit/connection.rb:156:in `request'
from /Users/olle/.gem/ruby/2.4.0/gems/octokit-4.7.0/lib/octokit/connection.rb:84:in `paginate'
from /Users/olle/.gem/ruby/2.4.0/gems/octokit-4.7.0/lib/octokit/client/repositories.rb:481:in `tags'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:78:in `block in calculate_pages'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:297:in `block in check_github_response'
from /Users/olle/.gem/ruby/2.4.0/gems/retriable-2.1.0/lib/retriable.rb:54:in `block in retriable'
from /Users/olle/.gem/ruby/2.4.0/gems/retriable-2.1.0/lib/retriable.rb:48:in `times'
from /Users/olle/.gem/ruby/2.4.0/gems/retriable-2.1.0/lib/retriable.rb:48:in `retriable'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:296:in `check_github_response'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:77:in `calculate_pages'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:96:in `github_fetch_tags'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:69:in `block in get_all_tags'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:297:in `block in check_github_response'
from /Users/olle/.gem/ruby/2.4.0/gems/retriable-2.1.0/lib/retriable.rb:54:in `block in retriable'
from /Users/olle/.gem/ruby/2.4.0/gems/retriable-2.1.0/lib/retriable.rb:48:in `times'
from /Users/olle/.gem/ruby/2.4.0/gems/retriable-2.1.0/lib/retriable.rb:48:in `retriable'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:296:in `check_github_response'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/octo_fetcher.rb:69:in `get_all_tags'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/generator/generator_tags.rb:9:in `fetch_and_filter_tags'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator/generator/generator_generation.rb:8:in `compound_changelog'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/lib/github_changelog_generator.rb:34:in `run'
from /Users/olle/.gem/ruby/2.4.0/gems/github_changelog_generator-1.14.2/bin/github_changelog_generator:5:in `<top (required)>'
from /Users/olle/.gem/ruby/2.4.0/bin/github_changelog_generator:23:in `load'
from /Users/olle/.gem/ruby/2.4.0/bin/github_changelog_generator:23:in `<main>'
Error output backtrace
Example output that I'm thinking of would be usable by someone trying to get this to work:
The <username>/<project> repository was not found. Does it exist? If private, did your personal access token have the "repos" permission?