blob: 0c75ad29b4e34f8701ff05eb8462d81327f51a4a [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import '../base/file_system.dart';
import '../base/process.dart';
const String kCFBundleIdentifierKey = 'CFBundleIdentifier';
const String kCFBundleShortVersionStringKey = 'CFBundleShortVersionString';
// Prefer using [iosWorkflow.getPlistValueFromFile] to enable mocking.
String getValueFromFile(String plistFilePath, String key) {
// TODO(chinmaygarde): For now, we only need to read from plist files on a mac
// host. If this changes, we will need our own Dart plist reader.
// Don't use PlistBuddy since that is not guaranteed to be installed.
// 'defaults' requires the path to be absolute and without the 'plist'
// extension.
const String executable = '/usr/bin/defaults';
if (!fs.isFileSync(executable))
return null;
if (!fs.isFileSync(plistFilePath))
return null;
final String normalizedPlistPath = fs.path.withoutExtension(fs.path.absolute(plistFilePath));
try {
final String value = runCheckedSync(<String>[
executable, 'read', normalizedPlistPath, key
]);
return value.isEmpty ? null : value;
} catch (error) {
return null;
}
}