diff --git a/Library/Homebrew/cmd/analytics.rb b/Library/Homebrew/cmd/analytics.rb index f5ac8ef8a0..134fb4b249 100644 --- a/Library/Homebrew/cmd/analytics.rb +++ b/Library/Homebrew/cmd/analytics.rb @@ -1,51 +1,49 @@ # typed: strict # frozen_string_literal: true +require "abstract_command" require "cli/parser" module Homebrew - module_function + module Cmd + class Analytics < AbstractCommand + cmd_args do + description <<~EOS + Control Homebrew's anonymous aggregate user behaviour analytics. + Read more at . - sig { returns(CLI::Parser) } - def analytics_args - Homebrew::CLI::Parser.new do - description <<~EOS - Control Homebrew's anonymous aggregate user behaviour analytics. - Read more at . + `brew analytics` [`state`]: + Display the current state of Homebrew's analytics. - `brew analytics` [`state`]: - Display the current state of Homebrew's analytics. + `brew analytics` (`on`|`off`): + Turn Homebrew's analytics on or off respectively. + EOS - `brew analytics` (`on`|`off`): - Turn Homebrew's analytics on or off respectively. - EOS - - named_args %w[state on off regenerate-uuid], max: 1 - end - end - - sig { void } - def analytics - args = analytics_args.parse - - case args.named.first - when nil, "state" - if Utils::Analytics.disabled? - puts "InfluxDB analytics are disabled." - else - puts "InfluxDB analytics are enabled." + named_args %w[state on off regenerate-uuid], max: 1 + end + + sig { override.void } + def run + case args.named.first + when nil, "state" + if Utils::Analytics.disabled? + puts "InfluxDB analytics are disabled." + else + puts "InfluxDB analytics are enabled." + end + puts "Google Analytics were destroyed." + when "on" + Utils::Analytics.enable! + when "off" + Utils::Analytics.disable! + when "regenerate-uuid" + Utils::Analytics.delete_uuid! + opoo "Homebrew no longer uses an analytics UUID so this has been deleted!" + puts "brew analytics regenerate-uuid is no longer necessary." + else + raise UsageError, "unknown subcommand: #{args.named.first}" + end end - puts "Google Analytics were destroyed." - when "on" - Utils::Analytics.enable! - when "off" - Utils::Analytics.disable! - when "regenerate-uuid" - Utils::Analytics.delete_uuid! - opoo "Homebrew no longer uses an analytics UUID so this has been deleted!" - puts "brew analytics regenerate-uuid is no longer necessary." - else - raise UsageError, "unknown subcommand: #{args.named.first}" end end end diff --git a/Library/Homebrew/test/cmd/analytics_spec.rb b/Library/Homebrew/test/cmd/analytics_spec.rb index c0cc6c75a2..bd354451e9 100644 --- a/Library/Homebrew/test/cmd/analytics_spec.rb +++ b/Library/Homebrew/test/cmd/analytics_spec.rb @@ -1,8 +1,9 @@ # frozen_string_literal: true +require "cmd/analytics" require "cmd/shared_examples/args_parse" -RSpec.describe "brew analytics" do +RSpec.describe Homebrew::Cmd::Analytics do it_behaves_like "parseable arguments" it "when HOMEBREW_NO_ANALYTICS is unset is disabled after running `brew analytics off`", :integration_test do