Skip to content
Snippets Groups Projects
Commit ef402a1f authored by jurgenhaas's avatar jurgenhaas
Browse files

#7 Change structure of bower asset definition

parent 3c01312b
No related branches found
No related tags found
No related merge requests found
......@@ -128,42 +128,35 @@ class Handler
'name' => 'bartik',
'import' => [],
],
'bower_assets' => [
'global' => false,
'fonts' => [],
'sass' => [],
],
'bower_assets' => [],
], $extra['theme-d8-sass']);
$fs = new Filesystem();
$dependencies = [];
$to = $this->buildInstallationPath($this->options['project_name']);
foreach ($this->options['bower_assets']['fonts'] as $key => $def) {
foreach ($this->options['bower_assets'] as $key => $assets) {
$package = $this->getPackage('bower-asset/' . $key);
$from = $package ? $this->getInstallationManager()->getInstallPath($package) : NULL;
if (!$package || !$fs->exists($from)) {
unset($this->options['bower_assets']['fonts'][$key]);
$version = $package ? $package->getVersion() : (isset($asset['version']) ? $asset['version'] : 'latest');
if ($package) {
// Installed globally as Composer package
$from = $this->getInstallationManager()->getInstallPath($package);
if (!$fs->exists($from)) {
// Global package is missing
unset($this->options['bower_assets'][$key]);
continue;
}
}
else {
$converter = new Converter($from, $to);
$this->options['bower_assets']['fonts'][$key]['src'] = $converter->convert($def['src']);
}
}
$dependencies = [];
foreach ($this->options['bower_assets']['sass'] as $key => $def) {
$package = $this->getPackage('bower-asset/' . $key);
$from = $package ? $this->getInstallationManager()->getInstallPath($package) : NULL;
if (!$package || !$fs->exists($from)) {
unset($this->options['bower_assets']['sass'][$key]);
// Will be installed locally via Bower
$from = implode(DIRECTORY_SEPARATOR, [$to, 'bower_components', $key]);
$dependencies[] = '"' . $key . '": "' . $version . '"';
}
else {
if (!isset($def['version'])) {
$def['version'] = 'latest';
$converter = new Converter($from, $to);
foreach (['fonts', 'sass', 'js'] as $type) {
if (isset($asset[$type])) {
$this->options['bower_assets'][$key][$type]['relative'] = $converter->convert($asset['src']);
}
$converter = new Converter($from, $to);
$this->options['bower_assets']['sass'][$key]['src'] = $converter->convert($def['src']);
$dependencies[] = '"' . $key . '": "' . $def['version'] . '"';
}
}
$this->options['bower_assets']['dependencies'] = implode(",\n ", $dependencies);
......@@ -201,15 +194,11 @@ class Handler
protected function getIgnoredFiles()
{
return ($this->getOption('bower_assets')['global'] ? ['bower.json'] : [] ) + [
'config/install/{{ project_name }}.settings.yml',
'config/schema/{{ project_name }}.schema.yml',
return array_merge((empty($this->getOption('bower_assets')['dependencies']) ? ['bower.json'] : []), [
'templates/README.md',
'README.md',
'{{ project_name }}.libraries.yml',
'{{ project_name }}.starterkit.yml',
'{{ project_name }}.theme',
];
]);
}
protected function getBinaryFiles()
......@@ -348,7 +337,7 @@ class Handler
}
// Remove bower stuff if that's available globally
if ($this->getOption('bower_assets')['global']) {
if (empty($this->getOption('bower_assets')['dependencies'])) {
if ($fs->exists($destination . DIRECTORY_SEPARATOR . 'bower.json')) {
$fs->remove($destination . DIRECTORY_SEPARATOR . 'bower.json');
}
......@@ -371,7 +360,7 @@ class Handler
}
// Handle Bower if not installed globally
if (!$this->getOption('bower_assets')['global'] && $fs->exists($destination . DIRECTORY_SEPARATOR . 'bower.json')) {
if (!empty($this->getOption('bower_assets')['dependencies']) && $fs->exists($destination . DIRECTORY_SEPARATOR . 'bower.json')) {
if ($update) {
$this->bower('update');
} else {
......
// TODO: Make this configurable
// Set the directory for the Bootstrap Glyphicon font.
$icon-font-path: '../fonts/bootstrap/';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment