// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/file_system/file_system.dart'; import 'package:yaml/yaml.dart'; /// The name of the embedder files being searched for. const String _embedderFileName = '_embedder.yaml'; /// Given the lib directory of a 'sky_engine' package, locates an /// `_embedder.yaml` file. /// /// If the file can be found, and contains a top level [YamlMap], then /// the [YamlMap] is returned. Otherwise, `null`` is returned. YamlMap? locateEmbedderYamlFor(Folder libFolder) { File file = libFolder.getFile(_embedderFileName); try { var embedderYaml = file.readAsStringSync(); try { if (loadYaml(embedderYaml) case YamlMap yaml) { return yaml; } } on Exception { // TODO(srawlins): If we ever get a malformed `_embedder.yaml` file, we // completely suppress the parse exception. We could instead wire up an // ErrorListener for the call to `loadYaml` above, and/or catch different // exceptions and write them to the instrumentation log. } return null; } on FileSystemException { // File can't be read. return null; } }