Skip to content
Snippets Groups Projects
Commit 1238c65b authored by Mike McQuaid's avatar Mike McQuaid
Browse files

utils: add analytics functions.

parent 0b79f48a
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ require "utils/inreplace"
require "utils/popen"
require "utils/fork"
require "utils/git"
require "utils/analytics"
require "open-uri"
class Tty
......
def analytics_anonymous_prefix_and_os
@analytics_anonymous_prefix_and_os ||= begin
"#{OS_VERSION}, #{HOMEBREW_PREFIX.to_s.gsub(ENV["HOME"], "~")}"
end
end
def report_analytics(type, metadata={})
return unless ENV["HOMEBREW_ANALYTICS"]
metadata_args = metadata.map do |key, value|
["-d", "#{key}=#{value}"] if key && value
end.compact.flatten
# Send analytics. Anonymise the IP address (aip=1) and don't send or store
# any personally identifiable information.
# https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide
# https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
system "curl", "https://www.google-analytics.com/collect", "-d", "v=1",
"--silent", "--max-time", "3", "--output", "/dev/null",
"--user-agent", "#{HOMEBREW_USER_AGENT_CURL}",
"-d", "tid=#{ENV["HOMEBREW_ANALYTICS_ID"]}",
"-d", "cid=#{ENV["HOMEBREW_ANALYTICS_USER_UUID"]}",
"-d", "aip=1",
"-d", "an=Homebrew",
"-d", "av=#{HOMEBREW_VERSION}",
"-d", "t=#{type}",
*metadata_args
end
def report_analytics_event(category, action, label=analytics_anonymous_prefix_and_os, value=nil)
report_analytics(:event, {
:ec => category,
:ea => action,
:el => label,
:ev => value,
})
end
def report_analytics_exception(exception, options={})
if exception.is_a? BuildError
report_analytics_event("BuildError", e.formula.full_name)
end
fatal = options.fetch(:fatal, true) ? "1" : "0"
report_analytics(:exception, {
:exd => exception.class.name,
:exf => fatal,
})
end
def report_analytics_screenview(screen_name)
report_analytics(:screenview, :cd => screen_name)
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment