read static method

PlatformLinks read(
  1. String root
)

Reads the iOS and Android config of the project at root.

Anything unreadable is left out rather than reported as empty, so a project without one platform doesn't look misconfigured.

Implementation

static PlatformLinks read(String root) {
  final String? plist = _read('$root/ios/Runner/Info.plist');
  final List<String> domains = [];
  for (final String path in const [
    'ios/Runner/Runner.entitlements',
    'ios/Runner/RunnerDebug.entitlements',
  ]) {
    final String? entitlements = _read('$root/$path');
    if (entitlements == null) continue;
    for (final String value in _plistStrings(entitlements)) {
      if (value.startsWith('applinks:')) {
        domains.add(value.substring('applinks:'.length));
      }
    }
  }

  final String? manifest = _read(
    '$root/android/app/src/main/AndroidManifest.xml',
  );
  return PlatformLinks(
    iosFound: plist != null,
    iosSchemes: plist == null ? const [] : _urlSchemes(plist),
    iosDomains: _unique(domains),
    androidFound: manifest != null,
    androidSchemes: manifest == null
        ? const []
        : _attributes(manifest, 'scheme'),
    androidHosts: manifest == null ? const [] : _attributes(manifest, 'host'),
  );
}