
Avoid writing an empty UUID to the Git configuration file and disable analytics temporarily to avoid sending bogus data with an invalid UUID.
112 lines
3.6 KiB
Bash
112 lines
3.6 KiB
Bash
# Migrate analytics UUID to its new home in Homebrew repo's git config and
|
|
# remove the legacy UUID file if detected.
|
|
migrate-legacy-uuid-file() {
|
|
local legacy_uuid_file="$HOME/.homebrew_analytics_user_uuid"
|
|
if [[ -f "$legacy_uuid_file" ]]
|
|
then
|
|
local analytics_uuid="$(<"$legacy_uuid_file")"
|
|
if [[ -n "$analytics_uuid" ]]
|
|
then
|
|
git config --file="$HOMEBREW_REPOSITORY/.git/config" --replace-all homebrew.analyticsuuid "$analytics_uuid"
|
|
fi
|
|
rm -f "$legacy_uuid_file"
|
|
fi
|
|
}
|
|
|
|
setup-analytics() {
|
|
local git_config_file="$HOMEBREW_REPOSITORY/.git/config"
|
|
|
|
migrate-legacy-uuid-file
|
|
|
|
if [[ -n "$HOMEBREW_NO_ANALYTICS" ]]
|
|
then
|
|
return
|
|
fi
|
|
|
|
local message_seen="$(git config --file="$git_config_file" --get homebrew.analyticsmessage)"
|
|
local analytics_disabled="$(git config --file="$git_config_file" --get homebrew.analyticsdisabled)"
|
|
if [[ "$message_seen" != "true" || "$analytics_disabled" = "true" ]]
|
|
then
|
|
# Internal variable for brew's use, to differentiate from user-supplied setting
|
|
export HOMEBREW_NO_ANALYTICS_THIS_RUN="1"
|
|
return
|
|
fi
|
|
|
|
HOMEBREW_ANALYTICS_USER_UUID="$(git config --file="$git_config_file" --get homebrew.analyticsuuid)"
|
|
if [[ -z "$HOMEBREW_ANALYTICS_USER_UUID" ]]
|
|
then
|
|
HOMEBREW_ANALYTICS_USER_UUID="$(uuidgen)"
|
|
|
|
if [[ -z "$HOMEBREW_ANALYTICS_USER_UUID" ]]
|
|
then
|
|
# Avoid sending bogus analytics if no UUID could be generated.
|
|
export HOMEBREW_NO_ANALYTICS_THIS_RUN="1"
|
|
return
|
|
fi
|
|
git config --file="$git_config_file" --replace-all homebrew.analyticsuuid "$HOMEBREW_ANALYTICS_USER_UUID"
|
|
fi
|
|
|
|
if [[ -n "$HOMEBREW_LINUX" ]]
|
|
then
|
|
# For Linuxbrew's analytics.
|
|
HOMEBREW_ANALYTICS_ID="UA-76492262-1"
|
|
else
|
|
# Otherwise, fall back to Homebrew's analytics.
|
|
HOMEBREW_ANALYTICS_ID="UA-76679469-1"
|
|
fi
|
|
|
|
export HOMEBREW_ANALYTICS_ID
|
|
export HOMEBREW_ANALYTICS_USER_UUID
|
|
}
|
|
|
|
report-analytics-screenview-command() {
|
|
[[ -n "$HOMEBREW_NO_ANALYTICS" || -n "$HOMEBREW_NO_ANALYTICS_THIS_RUN" ]] && return
|
|
|
|
# Don't report non-official commands.
|
|
if ! [[ "$HOMEBREW_COMMAND" = "bundle" ||
|
|
"$HOMEBREW_COMMAND" = "services" ||
|
|
-f "$HOMEBREW_LIBRARY/Homebrew/cmd/$HOMEBREW_COMMAND.rb" ||
|
|
-f "$HOMEBREW_LIBRARY/Homebrew/cmd/$HOMEBREW_COMMAND.sh" ||
|
|
-f "$HOMEBREW_LIBRARY/Homebrew/dev-cmd/$HOMEBREW_COMMAND.rb" ||
|
|
-f "$HOMEBREW_LIBRARY/Homebrew/dev-cmd/$HOMEBREW_COMMAND.sh" ]]
|
|
then
|
|
return
|
|
fi
|
|
|
|
# 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.
|
|
case "$HOMEBREW_COMMAND" in
|
|
--prefix|analytics|command|commands)
|
|
return
|
|
;;
|
|
esac
|
|
|
|
local args=(
|
|
--max-time 3 \
|
|
--user-agent "$HOMEBREW_USER_AGENT_CURL" \
|
|
-d v=1 \
|
|
-d tid="$HOMEBREW_ANALYTICS_ID" \
|
|
-d cid="$HOMEBREW_ANALYTICS_USER_UUID" \
|
|
-d aip=1 \
|
|
-d an="$HOMEBREW_PRODUCT" \
|
|
-d av="$HOMEBREW_VERSION" \
|
|
-d t=screenview \
|
|
-d cd="$HOMEBREW_COMMAND" \
|
|
)
|
|
|
|
# Send analytics. Don't send or store any personally identifiable information.
|
|
# https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Analytics.md
|
|
# https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide#screenView
|
|
# https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters
|
|
if [[ -z "$HOMEBREW_ANALYTICS_DEBUG" ]]
|
|
then
|
|
"$HOMEBREW_CURL" https://www.google-analytics.com/collect \
|
|
"${args[@]}" \
|
|
--silent --output /dev/null &>/dev/null & disown
|
|
else
|
|
"$HOMEBREW_CURL" https://www.google-analytics.com/debug/collect \
|
|
"${args[@]}"
|
|
fi
|
|
}
|