diff --git a/Library/Homebrew/cask/installer.rb b/Library/Homebrew/cask/installer.rb index 9075bb651ab18..30dac0afc6f4a 100644 --- a/Library/Homebrew/cask/installer.rb +++ b/Library/Homebrew/cask/installer.rb @@ -110,7 +110,9 @@ def install install_artifacts - ::Utils::Analytics.report_event("cask_install", @cask.token, on_request: true) unless @cask.tap&.private? + if @cask.tap&.should_report_analytics? + ::Utils::Analytics.report_event("cask_install", @cask.token, on_request: true) + end purge_backed_up_versioned_files diff --git a/Library/Homebrew/formula_installer.rb b/Library/Homebrew/formula_installer.rb index d367257b286b5..8965f08f7c1ff 100644 --- a/Library/Homebrew/formula_installer.rb +++ b/Library/Homebrew/formula_installer.rb @@ -414,7 +414,7 @@ def install options = display_options(formula).join(" ") oh1 "Installing #{Formatter.identifier(formula.full_name)} #{options}".strip if show_header? - if formula.tap&.installed? && !formula.tap&.private? + if formula.tap&.should_report_analytics? action = "#{formula.full_name} #{options}".strip Utils::Analytics.report_event("install", action, on_request: installed_on_request?) end diff --git a/Library/Homebrew/tap.rb b/Library/Homebrew/tap.rb index bb966d147b840..c14dc4a4b182e 100644 --- a/Library/Homebrew/tap.rb +++ b/Library/Homebrew/tap.rb @@ -670,6 +670,13 @@ def pypi_formula_mappings @pypi_formula_mappings = read_formula_list path/HOMEBREW_TAP_PYPI_FORMULA_MAPPINGS end + # @private + def should_report_analytics? + return Homebrew::EnvConfig.install_from_api? && official? unless installed? + + !private? + end + def ==(other) other = Tap.fetch(other) if other.is_a?(String) self.class == other.class && name == other.name diff --git a/Library/Homebrew/utils/analytics.rb b/Library/Homebrew/utils/analytics.rb index e44034211d5aa..3b0c395cc3087 100644 --- a/Library/Homebrew/utils/analytics.rb +++ b/Library/Homebrew/utils/analytics.rb @@ -144,8 +144,7 @@ def report_event(category, action, on_request: false) def report_build_error(exception) return unless exception.formula.tap - return unless exception.formula.tap.installed? - return if exception.formula.tap.private? + return unless exception.formula.tap.should_report_analytics? action = exception.formula.full_name if (options = exception.options.to_a.map(&:to_s).join(" ").presence)