54 lines
1.2 KiB
PHP
54 lines
1.2 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace Lucent\Commands;
|
||
|
|
|
||
|
|
use DirectoryIterator;
|
||
|
|
use Illuminate\Console\Command;
|
||
|
|
|
||
|
|
class CompileSchemas extends Command
|
||
|
|
{
|
||
|
|
|
||
|
|
protected $signature = 'lucent:schemas';
|
||
|
|
|
||
|
|
protected $description = 'Compiles schemas';
|
||
|
|
|
||
|
|
|
||
|
|
public function __construct()
|
||
|
|
{
|
||
|
|
parent::__construct();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
public function handle()
|
||
|
|
{
|
||
|
|
$configDir = base_path(config('lucent.schemas_path'));
|
||
|
|
$schemasDirIterator = new DirectoryIterator($configDir);
|
||
|
|
$schemas = [];
|
||
|
|
foreach ($schemasDirIterator as $file) {
|
||
|
|
if ($file->getExtension() !== "json") {
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
$schemaJson = file_get_contents($configDir . "/" . $file->getFilename());
|
||
|
|
$schema = json_decode($schemaJson, true);
|
||
|
|
if (empty($schema)) {
|
||
|
|
$this->error("Invalid JSON " . $file->getFilename());
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
$schemas[] = $schema;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
$schemas = collect($schemas)->sortBy("label")->values()->toArray();
|
||
|
|
|
||
|
|
if(!file_exists(storage_path("lucent"))){
|
||
|
|
mkdir(storage_path("lucent"));
|
||
|
|
}
|
||
|
|
|
||
|
|
file_put_contents(schemas_path(), json_encode($schemas));
|
||
|
|
|
||
|
|
$this->info("Lucent Schemas were updated");
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|