From 08388b149e5a45d21214170a038a118eeaba850d Mon Sep 17 00:00:00 2001 From: Daniel Lee Harple Date: Sat, 18 May 2013 08:27:22 -0400 Subject: [PATCH] Added support for a GitHub Personal API Access token Signed-off-by: Jack Nagel --- Library/Contributions/manpages/brew.1.md | 6 ++++++ Library/Homebrew/global.rb | 1 + Library/Homebrew/utils.rb | 4 +++- share/man/man1/brew.1 | 6 +++++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Library/Contributions/manpages/brew.1.md b/Library/Contributions/manpages/brew.1.md index 0084652942..b0cca1867d 100644 --- a/Library/Contributions/manpages/brew.1.md +++ b/Library/Contributions/manpages/brew.1.md @@ -459,6 +459,12 @@ can take several different forms: directories. TextMate can handle this correctly in project mode, but many editors will do strange things in this case. + * HOMEBREW\_GITHUB\_API\_TOKEN: + A personal GitHub API Access token, which you can be create at + . If set, GitHub will allow you a + greater number of API requests. See + for more information. + * HOMEBREW\_KEEP\_INFO: If set, Homebrew will not remove files from `share/info`, allowing them to be linked from the Cellar. To access these info files, prepend diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb index 8d43afcf26..72f4f757d0 100644 --- a/Library/Homebrew/global.rb +++ b/Library/Homebrew/global.rb @@ -77,6 +77,7 @@ else MACOS = false end +HOMEBREW_GITHUB_API_TOKEN = ENV["HOMEBREW_GITHUB_API_TOKEN"] HOMEBREW_USER_AGENT = "Homebrew #{HOMEBREW_VERSION} (Ruby #{RUBY_VERSION}-#{RUBY_PATCHLEVEL}; #{OS_VERSION})" HOMEBREW_CURL_ARGS = '-f#LA' diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb index ad943b6f86..ad86946aa4 100644 --- a/Library/Homebrew/utils.rb +++ b/Library/Homebrew/utils.rb @@ -260,7 +260,9 @@ module GitHub extend self def open url, headers={}, &block require 'open-uri' begin - Kernel.open(url, {'User-Agent' => HOMEBREW_USER_AGENT}.merge(headers), &block) + default_headers = {'User-Agent' => HOMEBREW_USER_AGENT} + default_headers['Authorization'] = "token #{HOMEBREW_GITHUB_API_TOKEN}" if HOMEBREW_GITHUB_API_TOKEN + Kernel.open(url, default_headers.merge(headers), &block) rescue OpenURI::HTTPError => e if e.io.meta['x-ratelimit-remaining'].to_i <= 0 require 'vendor/multi_json' diff --git a/share/man/man1/brew.1 b/share/man/man1/brew.1 index 13b8371648..38c4c6f266 100644 --- a/share/man/man1/brew.1 +++ b/share/man/man1/brew.1 @@ -1,7 +1,7 @@ .\" generated with Ronn/v0.7.3 .\" http://github.com/rtomayko/ronn/tree/0.7.3 . -.TH "BREW" "1" "April 2013" "Homebrew" "brew" +.TH "BREW" "1" "May 2013" "Homebrew" "brew" . .SH "NAME" \fBbrew\fR \- The missing package manager for OS X @@ -500,6 +500,10 @@ If set, Homebrew will use this editor when editing a single formula, or several \fINOTE\fR: \fBbrew edit\fR will open all of Homebrew as discontinuous files and directories\. TextMate can handle this correctly in project mode, but many editors will do strange things in this case\. . .TP +HOMEBREW_GITHUB_API_TOKEN +A personal GitHub API Access token, which you can be create at \fIhttps://github\.com/settings/applications\fR\. If set, GitHub will allow you a greater number of API requests\. See \fIhttp://developer\.github\.com/v3/#rate\-limiting\fR for more information\. +. +.TP HOMEBREW_KEEP_INFO If set, Homebrew will not remove files from \fBshare/info\fR, allowing them to be linked from the Cellar\. To access these info files, prepend \fBshare/info\fR to your \fBINFOPATH\fR environment variable\. .