<?php
/**
 * Enable JSON:API module and create a basic page node for testing.
 */

$drupalDir = $argv[1] ?? '/tmp/drupal';
chdir($drupalDir);

require_once "vendor/autoload.php";

// Bootstrap Drupal to full level
use Drupal\Core\DrupalKernel;
use Drupal\Core\Site\Settings;
use Symfony\Component\HttpFoundation\Request;

$classLoader = require "vendor/autoload.php";
$kernel = new DrupalKernel('prod', $classLoader, FALSE);
$kernel::bootEnvironment();
$kernel->setSitePath('sites/default');
Settings::initialize($kernel->getAppRoot(), $kernel->getSitePath(), $classLoader);
$kernel->boot();

$request = Request::createFromGlobals();
$kernel->preHandle($request);

// Enable jsonapi module
$module_installer = \Drupal::service('module_installer');
$module_installer->install(['jsonapi']);
echo "JSON:API module enabled.\n";

// Create a "page" content type if it doesn't exist
$node_type_storage = \Drupal::entityTypeManager()->getStorage('node_type');
if (!$node_type_storage->load('page')) {
  $node_type = $node_type_storage->create([
    'type' => 'page',
    'name' => 'Page',
    'description' => 'A basic page.',
  ]);
  $node_type->save();
  echo "Created 'page' content type.\n";
} else {
  echo "'page' content type already exists.\n";
}

// Create a basic page node
$node_storage = \Drupal::entityTypeManager()->getStorage('node');
$node = $node_storage->create([
  'type' => 'page',
  'title' => 'Test Page',
  'status' => 1,
  'uid' => 1,
]);
$node->save();
echo "Created page node with nid " . $node->id() . ".\n";

// Clear caches so JSON:API routes are available
\Drupal::service('cache.render')->deleteAll();
\Drupal::service('router.builder')->rebuild();
echo "Caches cleared.\n";
