mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
allow per-command analytics suppression (#3919)
* allow per-command analytics suppression * rev the usage package dep
This commit is contained in:
parent
4db64ace96
commit
483922d15c
|
@ -9,11 +9,9 @@ import '../runner/flutter_command.dart';
|
|||
|
||||
class ConfigCommand extends FlutterCommand {
|
||||
ConfigCommand() {
|
||||
String usageStatus = flutterUsage.enabled ? 'enabled' : 'disabled';
|
||||
|
||||
argParser.addFlag('analytics',
|
||||
negatable: true,
|
||||
help: 'Enable or disable reporting anonymously tool usage statistics and crash reports.\n(currently $usageStatus)');
|
||||
help: 'Enable or disable reporting anonymously tool usage statistics and crash reports.');
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -28,6 +26,9 @@ class ConfigCommand extends FlutterCommand {
|
|||
@override
|
||||
final List<String> aliases = <String>['configure'];
|
||||
|
||||
@override
|
||||
String get usageFooter => 'Analytics reporting is currently ${flutterUsage.enabled ? 'enabled' : 'disabled'}.';
|
||||
|
||||
@override
|
||||
bool get requiresProjectRoot => false;
|
||||
|
||||
|
|
|
@ -44,6 +44,10 @@ class FlutterCommandRunner extends CommandRunner {
|
|||
negatable: true,
|
||||
hide: !verboseHelp,
|
||||
help: 'Whether to use terminal colors.');
|
||||
argParser.addFlag('suppress-analytics',
|
||||
negatable: false,
|
||||
hide: !verboseHelp,
|
||||
help: 'Suppress analytics reporting when this command runs.');
|
||||
|
||||
String packagesHelp;
|
||||
if (FileSystemEntity.isFileSync('.packages'))
|
||||
|
@ -128,10 +132,13 @@ class FlutterCommandRunner extends CommandRunner {
|
|||
if (globalResults.wasParsed('color'))
|
||||
logger.supportsColor = globalResults['color'];
|
||||
|
||||
// we must set Cache.flutterRoot early because other features use it
|
||||
// (e.g. enginePath's initialiser uses it)
|
||||
// We must set Cache.flutterRoot early because other features use it (e.g.
|
||||
// enginePath's initialiser uses it).
|
||||
Cache.flutterRoot = path.normalize(path.absolute(globalResults['flutter-root']));
|
||||
|
||||
if (globalResults['suppress-analytics'])
|
||||
flutterUsage.suppressAnalytics = true;
|
||||
|
||||
_checkFlutterCopy();
|
||||
|
||||
PackageMap.instance = new PackageMap(path.normalize(path.absolute(
|
||||
|
|
|
@ -44,35 +44,43 @@ class Usage {
|
|||
Analytics _analytics;
|
||||
|
||||
bool _printedUsage = false;
|
||||
bool _suppressAnalytics = false;
|
||||
|
||||
bool get isFirstRun => _analytics.firstRun;
|
||||
|
||||
bool get enabled => _analytics.enabled;
|
||||
|
||||
bool get suppressAnalytics => _suppressAnalytics || _analytics.firstRun;
|
||||
|
||||
/// Suppress analytics for this session.
|
||||
set suppressAnalytics(bool value) {
|
||||
_suppressAnalytics = value;
|
||||
}
|
||||
|
||||
/// Enable or disable reporting analytics.
|
||||
set enabled(bool value) {
|
||||
_analytics.enabled = value;
|
||||
}
|
||||
|
||||
void sendCommand(String command) {
|
||||
if (!isFirstRun)
|
||||
if (!suppressAnalytics)
|
||||
_analytics.sendScreenView(command);
|
||||
}
|
||||
|
||||
void sendEvent(String category, String parameter) {
|
||||
if (!isFirstRun)
|
||||
if (!suppressAnalytics)
|
||||
_analytics.sendEvent(category, parameter);
|
||||
}
|
||||
|
||||
UsageTimer startTimer(String event) {
|
||||
if (isFirstRun)
|
||||
if (suppressAnalytics)
|
||||
return new _MockUsageTimer();
|
||||
else
|
||||
return new UsageTimer._(event, _analytics.startTimer(event, category: 'flutter'));
|
||||
}
|
||||
|
||||
void sendException(dynamic exception, StackTrace trace) {
|
||||
if (!isFirstRun)
|
||||
if (!suppressAnalytics)
|
||||
_analytics.sendException('${exception.runtimeType}; ${sanitizeStacktrace(trace)}');
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ dependencies:
|
|||
path: ^1.3.0
|
||||
pub_semver: ^1.0.0
|
||||
stack_trace: ^1.4.0
|
||||
usage: ^2.2.0+1
|
||||
usage: ^2.2.1
|
||||
web_socket_channel: ^1.0.0
|
||||
xml: ^2.4.1
|
||||
yaml: ^2.1.3
|
||||
|
|
|
@ -120,6 +120,12 @@ class MockUsage implements Usage {
|
|||
@override
|
||||
bool get isFirstRun => false;
|
||||
|
||||
@override
|
||||
bool get suppressAnalytics => false;
|
||||
|
||||
@override
|
||||
set suppressAnalytics(bool value) { }
|
||||
|
||||
@override
|
||||
bool get enabled => true;
|
||||
|
||||
|
|
Loading…
Reference in a new issue