diff --git a/packages/flutter_tools/lib/executable.dart b/packages/flutter_tools/lib/executable.dart index 98b6664d41..0d9cddfbe6 100644 --- a/packages/flutter_tools/lib/executable.dart +++ b/packages/flutter_tools/lib/executable.dart @@ -102,7 +102,7 @@ Future main(List args) async { flutterUsage.sendException(error, chain); - if (Platform.environment.containsKey('FLUTTER_DEV')) { + if (Platform.environment.containsKey('FLUTTER_DEV') || isRunningOnBot) { // If we're working on the tools themselves, just print the stack trace. stderr.writeln('$error'); stderr.writeln(chain.terse.toString()); diff --git a/packages/flutter_tools/lib/src/base/utils.dart b/packages/flutter_tools/lib/src/base/utils.dart index 8b1ba05dcf..a550f9cbbf 100644 --- a/packages/flutter_tools/lib/src/base/utils.dart +++ b/packages/flutter_tools/lib/src/base/utils.dart @@ -8,6 +8,13 @@ import 'dart:io'; import 'package:crypto/crypto.dart'; import 'package:path/path.dart' as path; +bool get isRunningOnBot { + // https://docs.travis-ci.com/user/environment-variables/#Default-Environment-Variables + return + Platform.environment['TRAVIS'] == 'true' || + Platform.environment['CONTINUOUS_INTEGRATION'] == 'true'; +} + String hex(List bytes) { StringBuffer result = new StringBuffer(); for (int part in bytes) diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart index 562342c25c..70c1b61059 100644 --- a/packages/flutter_tools/lib/src/commands/upgrade.dart +++ b/packages/flutter_tools/lib/src/commands/upgrade.dart @@ -10,7 +10,7 @@ import '../base/process.dart'; import '../dart/pub.dart'; import '../globals.dart'; import '../runner/flutter_command.dart'; -import '../runner/version.dart'; +import '../version.dart'; class UpgradeCommand extends FlutterCommand { @override diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart index 7a718f0d12..86ac941162 100644 --- a/packages/flutter_tools/lib/src/doctor.dart +++ b/packages/flutter_tools/lib/src/doctor.dart @@ -12,7 +12,7 @@ import 'base/context.dart'; import 'base/os.dart'; import 'globals.dart'; import 'ios/ios_workflow.dart'; -import 'runner/version.dart'; +import 'version.dart'; const Map _osNames = const { 'macos': 'Mac OS', 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 382cc4ef9c..03a34f1ba0 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart @@ -18,7 +18,7 @@ import '../build_configuration.dart'; import '../globals.dart'; import '../package_map.dart'; import '../toolchain.dart'; -import 'version.dart'; +import '../version.dart'; const String kFlutterRootEnvironmentVariableName = 'FLUTTER_ROOT'; // should point to //flutter/ (root of flutter/flutter repo) const String kFlutterEngineEnvironmentVariableName = 'FLUTTER_ENGINE'; // should point to //engine/src/ (root of flutter/engine repo) diff --git a/packages/flutter_tools/lib/src/usage.dart b/packages/flutter_tools/lib/src/usage.dart index 388adb3027..440ce5e1f7 100644 --- a/packages/flutter_tools/lib/src/usage.dart +++ b/packages/flutter_tools/lib/src/usage.dart @@ -8,8 +8,9 @@ import 'package:usage/src/usage_impl_io.dart'; import 'package:usage/usage.dart'; import 'base/context.dart'; +import 'base/utils.dart'; import 'globals.dart'; -import 'runner/version.dart'; +import 'version.dart'; // TODO(devoncarew): We'll need to do some work on the user agent in order to // correctly track usage by operating system (dart-lang/usage/issues/70). @@ -22,7 +23,19 @@ class Usage { Usage() { String version = FlutterVersion.getVersionString(whitelistBranchName: true); _analytics = new AnalyticsIO(_kFlutterUA, 'flutter', version); - _analytics.analyticsOpt = AnalyticsOpt.optOut; + + bool runningOnCI = false; + + // Many CI systems don't do a full git checkout. + if (version.startsWith('unknown/')) + runningOnCI = true; + + // Check for common CI systems. + if (isRunningOnBot) + runningOnCI = true; + + // If we think we're running on a CI system, default to not sending analytics. + _analytics.analyticsOpt = runningOnCI ? AnalyticsOpt.optIn : AnalyticsOpt.optOut; } /// Returns [Usage] active in the current app context. @@ -82,10 +95,14 @@ class Usage { final String versionString = FlutterVersion.getVersionString(whitelistBranchName: true); + String welcomeString = 'Welcome to Flutter! - Flutter version $versionString - https://flutter.io'; + welcomeString = welcomeString.padLeft((welcomeString.length + 100) ~/ 2); + welcomeString = welcomeString.padRight(100); + printStatus(''); printStatus(''' ╔════════════════════════════════════════════════════════════════════════════════════════════════════╗ - ║ Welcome to Flutter! - Flutter version $versionString - https://flutter.io ║ + ║$welcomeString║ ║ ║ ║ The Flutter tool anonymously reports feature usage statistics and basic crash reports to Google in ║ ║ order to help Google contribute improvements to Flutter over time. See Google's privacy policy: ║ diff --git a/packages/flutter_tools/lib/src/runner/version.dart b/packages/flutter_tools/lib/src/version.dart similarity index 95% rename from packages/flutter_tools/lib/src/runner/version.dart rename to packages/flutter_tools/lib/src/version.dart index 8e400c5527..5b402a4a66 100644 --- a/packages/flutter_tools/lib/src/runner/version.dart +++ b/packages/flutter_tools/lib/src/version.dart @@ -4,8 +4,8 @@ import 'dart:io'; -import '../artifacts.dart'; -import '../base/process.dart'; +import 'artifacts.dart'; +import 'base/process.dart'; final Set kKnownBranchNames = new Set.from([ 'master', @@ -64,7 +64,7 @@ class FlutterVersion { return new FlutterVersion(flutterRoot != null ? flutterRoot : ArtifactStore.flutterRoot); } - /// Return a short string for the version (`a76bc8e22b/alpha`). + /// Return a short string for the version (`alpha/a76bc8e22b`). static String getVersionString({ bool whitelistBranchName: false }) { final String cwd = ArtifactStore.flutterRoot; @@ -80,7 +80,7 @@ class FlutterVersion { branch = 'dev'; } - return '$commit/$branch'; + return '$branch/$commit'; } } diff --git a/travis/setup.sh b/travis/setup.sh index 213102825d..cad886fc87 100755 --- a/travis/setup.sh +++ b/travis/setup.sh @@ -1,10 +1,8 @@ #!/bin/bash set -ex -# Download dependencies flutter -./bin/flutter --version - -# Disable analytics on the bots (to avoid skewing analytics data). +# disable analytics on the bots and download Flutter dependencies ./bin/flutter config --no-analytics +# run pub get in all the repo packages ./bin/flutter update-packages