From e9beaea0619dd2f3cd3bc014c77e1b3bbdb059a9 Mon Sep 17 00:00:00 2001 From: Elias Yishak <42216813+eliasyishak@users.noreply.github.com> Date: Tue, 12 Sep 2023 18:49:05 -0400 Subject: [PATCH] Clean up analytics opt in/out flags (#132588) Fixes: - #132258 --- packages/flutter_tools/lib/runner.dart | 22 +++++++++---------- .../lib/src/commands/config.dart | 6 ++++- packages/flutter_tools/lib/src/globals.dart | 2 +- .../src/runner/flutter_command_runner.dart | 20 ++++++++--------- .../general.shard/runner/runner_test.dart | 12 +++++----- 5 files changed, 33 insertions(+), 29 deletions(-) diff --git a/packages/flutter_tools/lib/runner.dart b/packages/flutter_tools/lib/runner.dart index d2dd7d6c535e..9b33580af03e 100644 --- a/packages/flutter_tools/lib/runner.dart +++ b/packages/flutter_tools/lib/runner.dart @@ -61,20 +61,20 @@ Future run( StackTrace? firstStackTrace; return runZoned>(() async { try { - if (args.contains('--disable-telemetry') && - args.contains('--enable-telemetry')) { + if (args.contains('--disable-analytics') && + args.contains('--enable-analytics')) { throwToolExit( - 'Both enable and disable telemetry commands were detected ' + 'Both enable and disable analytics commands were detected ' 'when only one can be supplied per invocation.', exitCode: 1); } - // Disable analytics if user passes in the `--disable-telemetry` option - // `flutter --disable-telemetry` + // Disable analytics if user passes in the `--disable-analytics` option + // "flutter --disable-analytics" // - // Same functionality as `flutter config --no-analytics` for disabling + // Same functionality as "flutter config --no-analytics" for disabling // except with the `value` hard coded as false - if (args.contains('--disable-telemetry')) { + if (args.contains('--disable-analytics')) { // The tool sends the analytics event *before* toggling the flag // intentionally to be sure that opt-out events are sent correctly. AnalyticsConfigEvent(enabled: false).send(); @@ -93,12 +93,12 @@ Future run( await globals.analytics.setTelemetry(false); } - // Enable analytics if user passes in the `--enable-telemetry` option - // `flutter --enable-telemetry` + // Enable analytics if user passes in the `--enable-analytics` option + // `flutter --enable-analytics` // // Same functionality as `flutter config --analytics` for enabling // except with the `value` hard coded as true - if (args.contains('--enable-telemetry')) { + if (args.contains('--enable-analytics')) { // The tool sends the analytics event *before* toggling the flag // intentionally to be sure that opt-out events are sent correctly. AnalyticsConfigEvent(enabled: true).send(); @@ -315,7 +315,7 @@ Future _exit(int code, {required ShutdownHooks shutdownHooks}) async { 'the flutter tool is migrating to a new analytics system. ' 'Disabling analytics collection will disable both the legacy ' 'and new analytics collection systems. ' - 'You can disable analytics reporting by running `flutter --disable-telemetry`\n'); + 'You can disable analytics reporting by running `flutter --disable-analytics`\n'); } // Invoking this will onboard the flutter tool onto diff --git a/packages/flutter_tools/lib/src/commands/config.dart b/packages/flutter_tools/lib/src/commands/config.dart index ae03cf38616b..9d0d3d6abfab 100644 --- a/packages/flutter_tools/lib/src/commands/config.dart +++ b/packages/flutter_tools/lib/src/commands/config.dart @@ -11,11 +11,15 @@ import '../features.dart'; import '../globals.dart' as globals; import '../reporting/reporting.dart'; import '../runner/flutter_command.dart'; +import '../runner/flutter_command_runner.dart'; class ConfigCommand extends FlutterCommand { ConfigCommand({ bool verboseHelp = false }) { argParser.addFlag('analytics', - help: 'Enable or disable reporting anonymously tool usage statistics and crash reports.'); + hide: !verboseHelp, + help: 'Enable or disable reporting anonymously tool usage statistics and crash reports.\n' + '(An alias for "--${FlutterGlobalOptions.kEnableAnalyticsFlag}" ' + 'and "--${FlutterGlobalOptions.kDisableAnalyticsFlag}" top level flags.)'); argParser.addFlag('clear-ios-signing-cert', negatable: false, help: 'Clear the saved development certificate choice used to sign apps for iOS device deployment.'); diff --git a/packages/flutter_tools/lib/src/globals.dart b/packages/flutter_tools/lib/src/globals.dart index 59045aa44235..48eaa42f11b8 100644 --- a/packages/flutter_tools/lib/src/globals.dart +++ b/packages/flutter_tools/lib/src/globals.dart @@ -88,7 +88,7 @@ final BotDetector _defaultBotDetector = BotDetector( ); Future get isRunningOnBot => botDetector.isRunningOnBot; -// Analytics instance for package:unified_analytics for telemetry +// Analytics instance for package:unified_analytics for analytics // reporting for all Flutter and Dart related tooling Analytics get analytics => context.get()!; diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart index 0f752bc98b62..25e0ddb12d19 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart @@ -26,8 +26,8 @@ abstract final class FlutterGlobalOptions { static const String kColorFlag = 'color'; static const String kContinuousIntegrationFlag = 'ci'; static const String kDeviceIdOption = 'device-id'; - static const String kDisableTelemetryFlag = 'disable-telemetry'; - static const String kEnableTelemetryFlag = 'enable-telemetry'; + static const String kDisableAnalyticsFlag = 'disable-analytics'; + static const String kEnableAnalyticsFlag = 'enable-analytics'; static const String kLocalEngineOption = 'local-engine'; static const String kLocalEngineSrcPathOption = 'local-engine-src-path'; static const String kLocalEngineHostOption = 'local-engine-host'; @@ -101,17 +101,17 @@ class FlutterCommandRunner extends CommandRunner { defaultsTo: true, hide: !verboseHelp, help: 'Allow Flutter to check for updates when this command runs.'); - argParser.addFlag(FlutterGlobalOptions.kSuppressAnalyticsFlag, + argParser.addFlag(FlutterGlobalOptions.kEnableAnalyticsFlag, negatable: false, - help: 'Suppress analytics reporting for the current CLI invocation.'); - argParser.addFlag(FlutterGlobalOptions.kDisableTelemetryFlag, + help: 'Enable telemetry reporting each time a flutter or dart ' + 'command runs.'); + argParser.addFlag(FlutterGlobalOptions.kDisableAnalyticsFlag, negatable: false, help: 'Disable telemetry reporting each time a flutter or dart ' 'command runs, until it is re-enabled.'); - argParser.addFlag(FlutterGlobalOptions.kEnableTelemetryFlag, + argParser.addFlag(FlutterGlobalOptions.kSuppressAnalyticsFlag, negatable: false, - help: 'Enable telemetry reporting each time a flutter or dart ' - 'command runs.'); + help: 'Suppress analytics reporting for the current CLI invocation.'); argParser.addOption(FlutterGlobalOptions.kPackagesOption, hide: !verboseHelp, help: 'Path to your "package_config.json" file.'); @@ -237,8 +237,8 @@ class FlutterCommandRunner extends CommandRunner { // If the flag for enabling or disabling telemetry is passed in, // we will return out - if (topLevelResults.wasParsed(FlutterGlobalOptions.kDisableTelemetryFlag) || - topLevelResults.wasParsed(FlutterGlobalOptions.kEnableTelemetryFlag)) { + if (topLevelResults.wasParsed(FlutterGlobalOptions.kDisableAnalyticsFlag) || + topLevelResults.wasParsed(FlutterGlobalOptions.kEnableAnalyticsFlag)) { return; } diff --git a/packages/flutter_tools/test/general.shard/runner/runner_test.dart b/packages/flutter_tools/test/general.shard/runner/runner_test.dart index bd8f56a44655..4bf6a18a7c91 100644 --- a/packages/flutter_tools/test/general.shard/runner/runner_test.dart +++ b/packages/flutter_tools/test/general.shard/runner/runner_test.dart @@ -326,7 +326,7 @@ void main() { expect(globals.analytics.shouldShowMessage, true); await runner.run( - ['--disable-telemetry'], + ['--disable-analytics'], () => [], // This flutterVersion disables crash reporting. flutterVersion: '[user-branch]/', @@ -343,7 +343,7 @@ void main() { ); testUsingContext( - 'runner enabling telemetry with flag', + 'runner enabling analytics with flag', () async { io.setExitFunctionForTests((int exitCode) {}); @@ -351,7 +351,7 @@ void main() { expect(globals.analytics.shouldShowMessage, false); await runner.run( - ['--enable-telemetry'], + ['--enable-analytics'], () => [], // This flutterVersion disables crash reporting. flutterVersion: '[user-branch]/', @@ -377,8 +377,8 @@ void main() { final int exitCode = await runner.run( [ - '--disable-telemetry', - '--enable-telemetry', + '--disable-analytics', + '--enable-analytics', ], () => [], // This flutterVersion disables crash reporting. @@ -538,7 +538,7 @@ class WaitingCrashReporter implements CrashReporter { } /// A fake [Analytics] that will be used to test -/// the --disable-telemetry flag +/// the --disable-analytics flag class FakeAnalytics extends Fake implements Analytics { FakeAnalytics({bool fakeTelemetryStatusOverride = true})