Audit bitbucket.com repositories
This commit is contained in:
parent
d25a954dbe
commit
8cb833f7da
@ -607,6 +607,44 @@ module Homebrew
|
|||||||
new_formula_problem "GitLab repository too new (<30 days old)"
|
new_formula_problem "GitLab repository too new (<30 days old)"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def audit_bitbucket_repository
|
||||||
|
user, repo = get_repo_data(%r{https?://bitbucket\.org/([^/]+)/([^/]+)/?.*})
|
||||||
|
return if user.nil?
|
||||||
|
|
||||||
|
api_url = "https://api.bitbucket.org/2.0/repositories/#{user}/#{repo}"
|
||||||
|
out, _, status= curl_output("--request", "GET", api_url)
|
||||||
|
return unless status.success?
|
||||||
|
|
||||||
|
metadata = JSON.parse(out)
|
||||||
|
return if metadata.nil?
|
||||||
|
|
||||||
|
new_formula_problem "Uses deprecated mercurial support in Bitbucket" if metadata["scm"] == "hg"
|
||||||
|
|
||||||
|
if metadata["parent"]["full_name"] == "#{user}/#{repo}"
|
||||||
|
new_formula_problem "Bitbucket fork (not canonical repository)"
|
||||||
|
end
|
||||||
|
|
||||||
|
if Date.parse(metadata["created_on"]) >= (Date.today - 30)
|
||||||
|
new_formula_problem "Bitbucket repository too new (<30 days old)"
|
||||||
|
end
|
||||||
|
|
||||||
|
forks_out, _, forks_status= curl_output("--request", "GET", "#{api_url}/forks")
|
||||||
|
return unless forks_status.success?
|
||||||
|
|
||||||
|
watcher_out, _, watcher_status= curl_output("--request", "GET", "#{api_url}/watchers")
|
||||||
|
return unless watcher_status.success?
|
||||||
|
|
||||||
|
forks_metadata = JSON.parse(forks_out)
|
||||||
|
return if forks_metadata.nil?
|
||||||
|
|
||||||
|
watcher_metadata = JSON.parse(watcher_out)
|
||||||
|
return if watcher_metadata.nil?
|
||||||
|
|
||||||
|
return if (forks_metadata["size"] < 30) && (watcher_metadata["size"] < 75)
|
||||||
|
|
||||||
|
new_formula_problem "Bitbucket repository not notable enough (<30 forks and <75 watchers)"
|
||||||
|
end
|
||||||
|
|
||||||
def get_repo_data(regex)
|
def get_repo_data(regex)
|
||||||
return unless @core_tap
|
return unless @core_tap
|
||||||
return unless @online
|
return unless @online
|
||||||
|
|||||||
@ -239,6 +239,20 @@ module Homebrew
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#audit_bitbucket_repository" do
|
||||||
|
specify "#audit_bitbucket_repository for stars, forks and creation date" do
|
||||||
|
fa = formula_auditor "foo", <<~RUBY, strict: true, online: true
|
||||||
|
class Foo < Formula
|
||||||
|
homepage "https://bitbucket.com/libtiff/libtiff"
|
||||||
|
url "https://brew.sh/foo-1.0.tgz"
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
fa.audit_bitbucket_repository
|
||||||
|
expect(fa.problems).to eq([])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "#audit_deps" do
|
describe "#audit_deps" do
|
||||||
describe "a dependency on a macOS-provided keg-only formula" do
|
describe "a dependency on a macOS-provided keg-only formula" do
|
||||||
describe "which is whitelisted" do
|
describe "which is whitelisted" do
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user