From 0302a6bc7cc72aed9b729e9d465856e65b6c8b2c Mon Sep 17 00:00:00 2001
From: Mike McQuaid
Date: Tue, 2 Aug 2016 10:59:39 +0100
Subject: [PATCH] audit: add --new-formula option.
Rather than nudge people to run `--strict` and then ignore some of the
results sometimes (e.g. GitHub repository notability) instead add a
dedicated `--new-formula` option that implies this is a one-time
advisory check.
---
Library/Homebrew/cmd/audit.rb | 21 ++++++++++++++-------
Library/Homebrew/cmd/create.rb | 2 +-
Library/Homebrew/dev-cmd/test-bot.rb | 2 +-
share/doc/homebrew/brew.1.html | 12 +++++++-----
share/man/man1/brew.1 | 11 ++++-------
5 files changed, 27 insertions(+), 21 deletions(-)
diff --git a/Library/Homebrew/cmd/audit.rb b/Library/Homebrew/cmd/audit.rb
index 5171ec7112..5827c054cb 100644
--- a/Library/Homebrew/cmd/audit.rb
+++ b/Library/Homebrew/cmd/audit.rb
@@ -1,15 +1,19 @@
-#: * `audit` [`--strict`] [`--online`] [`--display-cop-names`] [`--display-filename`] []:
+#: * `audit` [`--strict`] [`--online`] [`--new-formula`] [`--display-cop-names`] [`--display-filename`] []:
#: Check for Homebrew coding style violations. This should be
#: run before submitting a new formula.
#:
#: If no are provided, all of them are checked.
#:
#: If `--strict` is passed, additional checks are run, including RuboCop
-#: style checks. This should be used when creating new formulae.
+#: style checks.
#:
#: If `--online` is passed, additional slower checks that require a network
-#: connection are run. This should be used when creating for new formulae.
-#:
+#: connection are run.
+#
+#: If `--new-formula` is passed, various additional checks are run that check
+#: if a new formula is eligable for Homebrew. This should be used when creating
+#: new formulae and implies `--strict` and `--online`.
+#
#: If `--display-cop-names` is passed, the RuboCop cop name for each violation
#: is included in the output.
#:
@@ -43,9 +47,10 @@ module Homebrew
formula_count = 0
problem_count = 0
- strict = ARGV.include? "--strict"
+ new_formula = ARGV.include? "--new-formula"
+ strict = new_formula || ARGV.include?("--strict")
style = strict && RUBY_2_OR_LATER
- online = ARGV.include? "--online"
+ online = new_formula || ARGV.include?("--online")
ENV.activate_extensions!
ENV.setup_build_environment
@@ -63,7 +68,7 @@ module Homebrew
end
ff.each do |f|
- options = { :strict => strict, :online => online }
+ options = { :new_formula => new_formula, :strict => strict, :online => online }
options[:style_offenses] = style_results.file_offenses(f.path) if style
fa = FormulaAuditor.new(f, options)
fa.audit
@@ -150,6 +155,7 @@ class FormulaAuditor
def initialize(formula, options = {})
@formula = formula
+ @new_formula = !!options[:new_formula]
@strict = !!options[:strict]
@online = !!options[:online]
# Accept precomputed style offense results, for efficiency
@@ -534,6 +540,7 @@ class FormulaAuditor
def audit_github_repository
return unless @online
+ return unless @new_formula
regex = %r{https?://github\.com/([^/]+)/([^/]+)/?.*}
_, user, repo = *regex.match(formula.stable.url) if formula.stable
diff --git a/Library/Homebrew/cmd/create.rb b/Library/Homebrew/cmd/create.rb
index ed71a6d398..9be990318d 100644
--- a/Library/Homebrew/cmd/create.rb
+++ b/Library/Homebrew/cmd/create.rb
@@ -85,7 +85,7 @@ module Homebrew
fc.generate!
- puts "Please `brew audit --strict #{fc.name}` before submitting, thanks."
+ puts "Please `brew audit --new-formula #{fc.name}` before submitting, thanks."
exec_editor fc.path
end
diff --git a/Library/Homebrew/dev-cmd/test-bot.rb b/Library/Homebrew/dev-cmd/test-bot.rb
index c7309b114b..0c1beeca21 100644
--- a/Library/Homebrew/dev-cmd/test-bot.rb
+++ b/Library/Homebrew/dev-cmd/test-bot.rb
@@ -445,7 +445,7 @@ module Homebrew
fetch_args << "--force" if ARGV.include? "--cleanup"
audit_args = [formula_name]
- audit_args << "--strict" << "--online" if @added_formulae.include? formula_name
+ audit_args << "--new-formula" if @added_formulae.include? formula_name
if formula.stable
unless satisfied_requirements?(formula, :stable)
diff --git a/share/doc/homebrew/brew.1.html b/share/doc/homebrew/brew.1.html
index 007edd11cd..ad1b1f3920 100644
--- a/share/doc/homebrew/brew.1.html
+++ b/share/doc/homebrew/brew.1.html
@@ -39,18 +39,20 @@ If no search term is given, all locally available formulae are listed.
Read more at https://git.io/brew-analytics.
analytics
(on
|off
)Turn on/off Homebrew's analytics.
analytics
regenerate-uuid
Regenerate UUID used in Homebrew's analytics.
-audit
[--strict
] [--online
] [--display-cop-names
] [--display-filename
] [formulae]Check formulae for Homebrew coding style violations. This should be
+
audit
[--strict
] [--online
] [--new-formula
] [--display-cop-names
] [--display-filename
] [formulae]Check formulae for Homebrew coding style violations. This should be
run before submitting a new formula.
If no formulae are provided, all of them are checked.
If --strict
is passed, additional checks are run, including RuboCop
-style checks. This should be used when creating new formulae.
+style checks.
If --online
is passed, additional slower checks that require a network
-connection are run. This should be used when creating for new formulae.
-
-If --display-cop-names
is passed, the RuboCop cop name for each violation
+connection are run.
+If --new-formula
is passed, various additional checks are run that check
+if a new formula is eligable for Homebrew. This should be used when creating
+new formulae and implies --strict
and --online
.
+If --display-cop-names
is passed, the RuboCop cop name for each violation
is included in the output.
If --display-filename
is passed, every line of output is prefixed with the
diff --git a/share/man/man1/brew.1 b/share/man/man1/brew.1
index b235f76621..8777111038 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" "July 2016" "Homebrew" "brew"
+.TH "BREW" "1" "August 2016" "Homebrew" "brew"
.
.SH "NAME"
\fBbrew\fR \- The missing package manager for OS X
@@ -56,20 +56,17 @@ Turn on/off Homebrew\'s analytics\.
Regenerate UUID used in Homebrew\'s analytics\.
.
.TP
-\fBaudit\fR [\fB\-\-strict\fR] [\fB\-\-online\fR] [\fB\-\-display\-cop\-names\fR] [\fB\-\-display\-filename\fR] [\fIformulae\fR]
+\fBaudit\fR [\fB\-\-strict\fR] [\fB\-\-online\fR] [\fB\-\-new\-formula\fR] [\fB\-\-display\-cop\-names\fR] [\fB\-\-display\-filename\fR] [\fIformulae\fR]
Check \fIformulae\fR for Homebrew coding style violations\. This should be run before submitting a new formula\.
.
.IP
If no \fIformulae\fR are provided, all of them are checked\.
.
.IP
-If \fB\-\-strict\fR is passed, additional checks are run, including RuboCop style checks\. This should be used when creating new formulae\.
+If \fB\-\-strict\fR is passed, additional checks are run, including RuboCop style checks\.
.
.IP
-If \fB\-\-online\fR is passed, additional slower checks that require a network connection are run\. This should be used when creating for new formulae\.
-.
-.IP
-If \fB\-\-display\-cop\-names\fR is passed, the RuboCop cop name for each violation is included in the output\.
+If \fB\-\-online\fR is passed, additional slower checks that require a network connection are run\. If \fB\-\-new\-formula\fR is passed, various additional checks are run that check if a new formula is eligable for Homebrew\. This should be used when creating new formulae and implies \fB\-\-strict\fR and \fB\-\-online\fR\. If \fB\-\-display\-cop\-names\fR is passed, the RuboCop cop name for each violation is included in the output\.
.
.IP
If \fB\-\-display\-filename\fR is passed, every line of output is prefixed with the name of the file or formula being audited, to make the output easy to grep\.