analyze method

EnvironmentInfo analyze()

Implementation

EnvironmentInfo analyze() {
  String? flutter, dart, channel, java;
  try {
    final p = Process.runSync(
        Platform.isWindows ? 'cmd.exe' : 'flutter',
        Platform.isWindows
            ? ['/c', 'flutter', '--version', '--machine']
            : ['--version', '--machine']);
    final data = jsonDecode(p.stdout.toString()) as Map<String, dynamic>;
    flutter = data['flutterVersion']?.toString();
    dart = data['dartSdkVersion']?.toString();
    channel = data['channel']?.toString();
  } catch (_) {}
  try {
    final p = Process.runSync(Platform.isWindows ? 'cmd.exe' : 'java',
        Platform.isWindows ? ['/c', 'java', '-version'] : ['-version']);
    final match = RegExp(r'(?:version|openjdk)\s+"?([0-9][^"\s]*)')
        .firstMatch(p.stderr.toString() + '\n' + p.stdout.toString());
    java = match?.group(1);
  } catch (_) {}
  return EnvironmentInfo(
      flutterVersion: flutter,
      dartVersion: dart,
      flutterChannel: channel,
      javaVersion: java,
      javaHome: Platform.environment['JAVA_HOME'],
      androidSdkPath: Platform.environment['ANDROID_SDK_ROOT'] ??
          Platform.environment['ANDROID_HOME']);
}