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