An error occurred while loading commit signatures
  • Alexandre Ardhuin's avatar
    some spaces formatting (#29452) · a6af4228
    Alexandre Ardhuin authored
    * some space formattings
    
    * always use blocks in if-else if a block is used
    
    * format spaces in for and while
    
    * allow multiline if conditions
    
    * fix missing space
    a6af4228
plist_utils.dart 1.39 KB
// 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';
const String kCFBundleExecutable = 'CFBundleExecutable';

// 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 List<String> args = <String>[
      executable, 'read', normalizedPlistPath,
    ];
    if (key != null && key.isNotEmpty) {
      args.add(key);
    }
    final String value = runCheckedSync(args);
    return value.isEmpty ? null : value;
  } catch (error) {
    return null;
  }
}