aboutsummaryrefslogtreecommitdiffstats
path: root/Library
diff options
context:
space:
mode:
authorMike McQuaid2015-07-08 14:22:44 +0100
committerMike McQuaid2015-07-08 14:53:48 +0100
commit51a1792e7ad4946940089a68112af783faa8a16c (patch)
tree7896fc9637f4686f874b8fbbe37cdcd25335a47e /Library
parent48df76dc894370f902b02bf495a8b2c0dc021823 (diff)
downloadbrew-51a1792e7ad4946940089a68112af783faa8a16c.tar.bz2
Audit GitHub repository notability.
This stuff seems to be taken better when coming from a script rather than from a human. Feel free to disagree about the specific numbers chosen here.
Diffstat (limited to 'Library')
-rw-r--r--Library/Homebrew/cmd/audit.rb21
-rw-r--r--Library/Homebrew/utils.rb4
2 files changed, 25 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb
index 3ef601c3b..bacd8b0e3 100644
--- a/Library/Homebrew/cmd/audit.rb
+++ b/Library/Homebrew/cmd/audit.rb
@@ -422,6 +422,26 @@ class FormulaAuditor
end
end
+ def audit_github_repository
+ return unless @strict
+
+ regex = %r{https?://github.com/([^/]+)/([^/]+)/?.*}
+ _, user, repo = *regex.match(formula.stable.url)
+ _, user, repo = *regex.match(formula.homepage) unless user
+ return if !user || !repo
+
+ metadata = GitHub.repository(user, repo)
+ problem "GitHub fork (not canonical repository)" if metadata["fork"]
+ if (metadata["forks_count"] < 5) || (metadata["watchers_count"] < 5) ||
+ (metadata["stargazers_count"] < 10)
+ problem "GitHub repository not notable enough (<5 forks, <5 watchers and/or <10 stars)"
+ end
+
+ if (Date.parse(metadata["created_at"]) > (Date.today - 30))
+ problem "GitHub repository too new (<30 days old)"
+ end
+ end
+
def audit_specs
if head_only?(formula) && formula.tap.to_s.downcase != "homebrew/homebrew-head-only"
problem "Head-only (no stable download)"
@@ -831,6 +851,7 @@ class FormulaAuditor
audit_specs
audit_desc
audit_homepage
+ audit_github_repository
audit_deps
audit_conflicts
audit_options
diff --git a/Library/Homebrew/utils.rb b/Library/Homebrew/utils.rb
index 19b74a3cd..85aef283e 100644
--- a/Library/Homebrew/utils.rb
+++ b/Library/Homebrew/utils.rb
@@ -399,6 +399,10 @@ module GitHub extend self
open(uri) { |json| json["items"] }
end
+ def repository(user, repo)
+ open(URI.parse("https://api.github.com/repos/#{user}/#{repo}")) { |j| j }
+ end
+
def build_query_string(query, qualifiers)
s = "q=#{uri_escape(query)}+"
s << build_search_qualifier_string(qualifiers)