blob: b406aa6a32e88bcd72ef99eb8b1b096a480d5fa0 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// @dart = 2.6
import 'dart:convert';
import 'utils.dart';
class MacOSInfo {
/// Print information collected from the operating system.
///
/// Built in tools such as `system_profiler` and `defaults` are utilized.
Future<void> printInformation() async {
try {
await _printSafariApplications();
} catch (error) {
print('Error thrown while getting Safari Applications: $error');
}
try {
await _printSafariDefaults();
} catch (error) {
print('Error thrown while getting Safari defaults: $error');
}
try {
await _printUserLimits();
} catch (error) {
print('Error thrown while getting user limits defaults: $error');
}
}
/// Print information on applications in the system that contains string
/// `Safari`.
Future<void> _printSafariApplications() async {
final String systemProfileJson = await evalProcess(
'system_profiler', ['SPApplicationsDataType', '-json']);
final Map<String, dynamic> json =
jsonDecode(systemProfileJson) as Map<String, dynamic>;
final List<dynamic> systemProfile = json.values.first as List<dynamic>;
for (int i = 0; i < systemProfile.length; i++) {
final Map<String, dynamic> application =
systemProfile[i] as Map<String, dynamic>;
final String applicationName = application['_name'] as String;
if (applicationName.contains('Safari')) {
print('application: $applicationName '
'fullInfo: ${application.toString()}');
}
}
}
/// Print all the defaults in the system related to Safari.
Future<void> _printSafariDefaults() async {
final String defaults =
await evalProcess('/usr/bin/defaults', ['find', 'Safari']);
print('Safari related defaults:\n $defaults');
}
/// Print user limits (file and process).
Future<void> _printUserLimits() async {
final String fileLimit = await evalProcess('ulimit', ['-n']);
print('MacOS file limit: $fileLimit');
final String processLimit = await evalProcess('ulimit', ['-u']);
print('MacOS process limit: $processLimit');
}
}