<?php
|
|
|
|
namespace Drupal\koality_theme\Generator;
|
|
|
|
use Drupal\Console\Core\Generator\Generator;
|
|
use Drupal\Console\Extension\Manager;
|
|
use Drupal\Console\Generator\AuthenticationProviderGenerator;
|
|
use Drupal\Component\Serialization\Yaml;
|
|
|
|
|
|
/**
|
|
* Class KoalityThemeGenerator.
|
|
*
|
|
* @package Drupal\Console\Generator
|
|
*/
|
|
class KoalityThemeGenerator extends Generator {
|
|
|
|
|
|
/**
|
|
* @var Manager
|
|
*/
|
|
protected $extensionManager;
|
|
|
|
/**
|
|
* AuthenticationProviderGenerator constructor.
|
|
*
|
|
* @param Manager $extensionManager
|
|
*/
|
|
public function __construct(
|
|
Manager $extensionManager
|
|
) {
|
|
$this->extensionManager = $extensionManager;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function generate(array $parameters) {
|
|
$dir = $parameters['dir'];
|
|
$breakpoints = $parameters['breakpoints'];
|
|
$libraries = $parameters['libraries'];
|
|
$machine_name = $parameters['machine_name'];
|
|
$parameters['type'] = 'theme';
|
|
|
|
$dir = ($dir == '/' ? '' : $dir) . '/' . $machine_name;
|
|
if (file_exists($dir)) {
|
|
if (!is_dir($dir)) {
|
|
throw new \RuntimeException(
|
|
sprintf(
|
|
'Unable to generate the bundle as the target directory "%s" exists but is a file.',
|
|
realpath($dir)
|
|
)
|
|
);
|
|
}
|
|
$files = scandir($dir);
|
|
if ($files != ['.', '..']) {
|
|
throw new \RuntimeException(
|
|
sprintf(
|
|
'Unable to generate the bundle as the target directory "%s" is not empty.',
|
|
realpath($dir)
|
|
)
|
|
);
|
|
}
|
|
if (!is_writable($dir)) {
|
|
throw new \RuntimeException(
|
|
sprintf(
|
|
'Unable to generate the bundle as the target directory "%s" is not writable.',
|
|
realpath($dir)
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
if ($parameters['base_theme_regions'] && $parameters['base_theme']) {
|
|
$defaultRegions = Yaml::decode(file_get_contents($parameters['base_theme_path']));
|
|
$parameters['base_theme_regions'] = $defaultRegions['regions'];
|
|
$parameters['base_theme_regions_hidden'] = $defaultRegions['regions_hidden'];
|
|
}
|
|
|
|
$themePath = $dir . '/' . $machine_name;
|
|
|
|
$this->renderFile(
|
|
'theme/info.yml.twig',
|
|
$themePath . '.info.yml',
|
|
$parameters
|
|
);
|
|
|
|
$this->renderFile(
|
|
'theme/theme.twig',
|
|
$themePath . '.theme',
|
|
$parameters
|
|
);
|
|
|
|
$this->renderFile(
|
|
'theme/libraries.yml.twig',
|
|
$themePath . '.libraries.yml',
|
|
$parameters
|
|
);
|
|
|
|
if ($breakpoints) {
|
|
$this->renderFile(
|
|
'theme/breakpoints.yml.twig',
|
|
$themePath . '.breakpoints.yml',
|
|
$parameters
|
|
);
|
|
}
|
|
}
|
|
}
|