aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXu Cheng2016-05-01 22:04:46 +0800
committerXu Cheng2016-05-01 22:04:46 +0800
commit98aff27317eaf50c869341e04562062ecd09bd85 (patch)
tree94cbc46aa759141d4684d9c850468e1db507794f
parent90d3317d7dc9d809d7fc8da15e824161a0ce3008 (diff)
downloadbrew-98aff27317eaf50c869341e04562062ecd09bd85.tar.bz2
add `brew analytics` command (#173)
-rw-r--r--Library/Homebrew/cmd/analytics.rb46
-rw-r--r--Library/Homebrew/cmd/update-report.rb2
-rw-r--r--Library/Homebrew/utils/analytics.sh13
-rw-r--r--Library/brew.sh2
-rw-r--r--share/doc/homebrew/Analytics.md2
-rw-r--r--share/doc/homebrew/brew.1.html4
-rw-r--r--share/man/man1/brew.114
7 files changed, 72 insertions, 11 deletions
diff --git a/Library/Homebrew/cmd/analytics.rb b/Library/Homebrew/cmd/analytics.rb
new file mode 100644
index 000000000..649c53710
--- /dev/null
+++ b/Library/Homebrew/cmd/analytics.rb
@@ -0,0 +1,46 @@
+#: * `analytics` [`state`]:
+#: Display anonymous user behaviour analytics state.
+#: 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.
+
+module Homebrew
+ def analytics
+ config_file = HOMEBREW_REPOSITORY/".git/config"
+
+ raise UsageError if ARGV.named.size > 1
+ case ARGV.named.first
+ when nil, "state"
+ analyticsdisabled = \
+ Utils.popen_read("git config --file=#{config_file} --get homebrew.analyticsdisabled").chuzzle
+ uuid = \
+ Utils.popen_read("git config --file=#{config_file} --get homebrew.analyticsuuid").chuzzle
+ if ENV["HOMEBREW_NO_ANALYTICS"]
+ puts "Analytics is disabled (by HOMEBREW_NO_ANALYTICS)."
+ elsif analyticsdisabled == "true"
+ puts "Analytics is disabled."
+ else
+ puts "Analytics is enabled."
+ puts "UUID: #{uuid}" if uuid
+ end
+ when "on"
+ safe_system "git", "config", "--file=#{config_file}",
+ "--replace-all", "homebrew.analyticsdisabled", "false"
+ safe_system "git", "config", "--file=#{config_file}",
+ "--replace-all", "homebrew.analyticsmessage", "true"
+ when "off"
+ safe_system "git", "config", "--file=#{config_file}",
+ "--replace-all", "homebrew.analyticsdisabled", "true"
+ system "git", "config", "--file=#{config_file}", "--unset-all", "homebrew.analyticsuuid"
+ when "regenerate-uuid"
+ # it will be regenerated in next run.
+ system "git", "config", "--file=#{config_file}", "--unset-all", "homebrew.analyticsuuid"
+ else
+ raise UsageError
+ end
+ end
+end
diff --git a/Library/Homebrew/cmd/update-report.rb b/Library/Homebrew/cmd/update-report.rb
index 53b9d639a..1d9822ae5 100644
--- a/Library/Homebrew/cmd/update-report.rb
+++ b/Library/Homebrew/cmd/update-report.rb
@@ -17,7 +17,7 @@ module Homebrew
Utils.popen_read("git", "config", "--local", "--get", "homebrew.analyticsmessage").chuzzle
analytics_disabled = \
Utils.popen_read("git", "config", "--local", "--get", "homebrew.analyticsdisabled").chuzzle
- if analytics_message_displayed != "true" && analytics_disabled != "true"
+ if analytics_message_displayed != "true" && analytics_disabled != "true" && !ENV["HOMEBREW_NO_ANALYTICS"]
ENV["HOMEBREW_NO_ANALYTICS_THIS_RUN"] = "1"
ohai "Homebrew has enabled anonymous aggregate user behaviour analytics"
puts "Read the analytics documentation (and how to opt-out) here:"
diff --git a/Library/Homebrew/utils/analytics.sh b/Library/Homebrew/utils/analytics.sh
index 47716e5e5..2ca1c72e7 100644
--- a/Library/Homebrew/utils/analytics.sh
+++ b/Library/Homebrew/utils/analytics.sh
@@ -18,11 +18,9 @@ setup-analytics() {
migrate-legacy-uuid-file
- # Make disabling anlytics sticky
if [[ -n "$HOMEBREW_NO_ANALYTICS" ]]
then
- git config --file="$git_config_file" --replace-all homebrew.analyticsdisabled true
- git config --file="$git_config_file" --unset-all homebrew.analyticsuuid
+ return
fi
local message_seen="$(git config --file="$git_config_file" --get homebrew.analyticsmessage)"
@@ -72,10 +70,11 @@ report-analytics-screenview-command() {
# Don't report commands used mostly by our scripts and not users.
# TODO: list more e.g. shell completion things here perhaps using a single
# script as a shell-completion entry point.
- if [[ "$HOMEBREW_COMMAND" = "commands" ]]
- then
- return
- fi
+ case "$HOMEBREW_COMMAND" in
+ --prefix|analytics|command|commands)
+ return
+ ;;
+ esac
local args=(
--max-time 3 \
diff --git a/Library/brew.sh b/Library/brew.sh
index 54f713dd9..33f446503 100644
--- a/Library/brew.sh
+++ b/Library/brew.sh
@@ -190,7 +190,7 @@ fi
if [[ "$(id -u)" = "0" && "$(/usr/bin/stat -f%u "$HOMEBREW_BREW_FILE")" != "0" ]]
then
case "$HOMEBREW_COMMAND" in
- install|reinstall|postinstall|link|pin|update|upgrade|create|migrate|tap|tap-pin|switch)
+ analytics|install|reinstall|postinstall|link|pin|update|upgrade|create|migrate|tap|tap-pin|switch)
odie <<EOS
Cowardly refusing to 'sudo brew $HOMEBREW_COMMAND'
You can use brew with sudo, but only if the brew executable is owned by root.
diff --git a/share/doc/homebrew/Analytics.md b/share/doc/homebrew/Analytics.md
index 2200335e1..0e7824532 100644
--- a/share/doc/homebrew/Analytics.md
+++ b/share/doc/homebrew/Analytics.md
@@ -53,5 +53,5 @@ export HOMEBREW_NO_ANALYTICS=1
Alternatively, this will prevent analytics from ever being sent:
```sh
-git config --file="$(brew --repository)/.git/config" --replace-all homebrew.analyticsdisabled true
+brew analytics off
```
diff --git a/share/doc/homebrew/brew.1.html b/share/doc/homebrew/brew.1.html
index 1f3b5142b..56b217677 100644
--- a/share/doc/homebrew/brew.1.html
+++ b/share/doc/homebrew/brew.1.html
@@ -35,6 +35,10 @@ If no search term is given, all locally available formulae are listed.</p></dd>
<h2 id="COMMANDS">COMMANDS</h2>
<dl>
+<dt><code>analytics</code> [<code>state</code>]</dt><dd><p>Display anonymous user behaviour analytics state.
+Read more at <a href="https://git.io/brew-analytics" data-bare-link="true">https://git.io/brew-analytics</a>.</p></dd>
+<dt><code>analytics</code> (<code>on</code>|<code>off</code>)</dt><dd><p>Turn on/off Homebrew's analytics.</p></dd>
+<dt><code>analytics</code> <code>regenerate-uuid</code></dt><dd><p>Regenerate UUID used in Homebrew's analytics.</p></dd>
<dt><code>audit</code> [<code>--strict</code>] [<code>--online</code>] [<code>--display-cop-names</code>] [<var>formulae</var>]</dt><dd><p>Check <var>formulae</var> for Homebrew coding style violations. This should be
run before submitting a new formula.</p>
diff --git a/share/man/man1/brew.1 b/share/man/man1/brew.1
index 577dd95c8..3e6ba709c 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 2016" "Homebrew" "brew"
+.TH "BREW" "1" "May 2016" "Homebrew" "brew"
.
.SH "NAME"
\fBbrew\fR \- The missing package manager for OS X
@@ -44,6 +44,18 @@ Perform a substring search of formula names for \fItext\fR\. If \fItext\fR is su
.SH "COMMANDS"
.
.TP
+\fBanalytics\fR [\fBstate\fR]
+Display anonymous user behaviour analytics state\. Read more at \fIhttps://git\.io/brew\-analytics\fR\.
+.
+.TP
+\fBanalytics\fR (\fBon\fR|\fBoff\fR)
+Turn on/off Homebrew\'s analytics\.
+.
+.TP
+\fBanalytics\fR \fBregenerate\-uuid\fR
+Regenerate UUID used in Homebrew\'s analytics\.
+.
+.TP
\fBaudit\fR [\fB\-\-strict\fR] [\fB\-\-online\fR] [\fB\-\-display\-cop\-names\fR] [\fIformulae\fR]
Check \fIformulae\fR for Homebrew coding style violations\. This should be run before submitting a new formula\.
.