test Drupal site working on Koality Theme Builder
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

108 lines
2.6 KiB

<?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
);
}
}
}