5 use Contracts\RetrieverInterface;
6 use Drupal\Core\Extension\ExtensionList;
23 public function __construct($appRoot, ExtensionList $extensionList) {
48 public function retrieve(
string $id): ?string {
53 && is_readable($filename)
55 return file_get_contents($filename);
57 throw new \Exception(
"Schema {$id} not found.");
65 $drupalRoot = $appRoot;
67 if (is_dir($drupalRoot .
"/schema")) {
68 $this->directory = $drupalRoot .
"/schema";
70 elseif ((
$directory = $this->getDefaultSchemaDirectory($extensionList))
76 throw new \Exception(
"No schema directory found.");
88 protected function getDefaultSchemaDirectory($extensionList) {
90 $extensionList = $extensionList;
91 $infoFile = $extensionList->getPathname(
'dkan2');
93 return dirname($infoFile) .
'/schema';