Skip to content

Commit ad5e6b2

Browse files
committed
Merge pull request #182 from magento-mpi/develop
[MPI] - bug fix
2 parents 3c74e6b + 18444d3 commit ad5e6b2

File tree

9 files changed

+361
-192
lines changed

9 files changed

+361
-192
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Developer\Model\Less\FileGenerator;
7+
8+
use Magento\Framework\Less\FileGenerator\RelatedGenerator;
9+
use Magento\Framework\View\Asset\LocalInterface;
10+
11+
/**
12+
* Class PublicationDecorator
13+
* Decorates generator of related assets and publishes them
14+
*
15+
* @package Magento\Developer\Model\Less\FileGenerator
16+
*/
17+
class PublicationDecorator extends RelatedGenerator
18+
{
19+
/**
20+
* @var \Magento\Framework\App\View\Asset\Publisher
21+
*/
22+
private $publisher;
23+
24+
/**
25+
* @param \Magento\Framework\Filesystem $filesystem
26+
* @param \Magento\Framework\View\Asset\Repository $assetRepo
27+
* @param \Magento\Framework\Less\File\Temporary $temporaryFile
28+
* @param \Magento\Framework\App\View\Asset\Publisher $publisher
29+
*/
30+
public function __construct(
31+
\Magento\Framework\Filesystem $filesystem,
32+
\Magento\Framework\View\Asset\Repository $assetRepo,
33+
\Magento\Framework\Less\File\Temporary $temporaryFile,
34+
\Magento\Framework\App\View\Asset\Publisher $publisher
35+
) {
36+
parent::__construct($filesystem, $assetRepo, $temporaryFile);
37+
$this->publisher = $publisher;
38+
}
39+
40+
/**
41+
* {inheritdoc}
42+
*/
43+
protected function generateRelatedFile($relatedFileId, LocalInterface $asset)
44+
{
45+
$relatedAsset = parent::generateRelatedFile($relatedFileId, $asset);
46+
$this->publisher->publish($relatedAsset);
47+
return $relatedAsset;
48+
}
49+
}

app/etc/di.xml

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -557,13 +557,6 @@
557557
<argument name="publisher" xsi:type="object">developerPublisher</argument>
558558
</arguments>
559559
</type>
560-
<type name="Magento\Framework\View\Asset\SourceFileGeneratorPool">
561-
<arguments>
562-
<argument name="fileGeneratorTypes" xsi:type="array">
563-
<item name="less" xsi:type="object">Magento\Framework\Less\FileGenerator</item>
564-
</argument>
565-
</arguments>
566-
</type>
567560
<virtualType name="developerPublisher" type="Magento\Framework\App\View\Asset\Publisher">
568561
<arguments>
569562
<argument name="materializationStrategyFactory" xsi:type="object">developerMaterialization</argument>
@@ -577,24 +570,23 @@
577570
</argument>
578571
</arguments>
579572
</virtualType>
580-
<virtualType name="lessFileGeneratorMaterialization" type="Magento\Framework\App\View\Asset\MaterializationStrategy\Factory">
573+
<type name="Magento\Framework\View\Asset\SourceFileGeneratorPool">
581574
<arguments>
582-
<argument name="strategiesList" xsi:type="array">
583-
<item name="view_preprocessed" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Symlink</item>
584-
<item name="default" xsi:type="object">Magento\Framework\App\View\Asset\MaterializationStrategy\Copy</item>
575+
<argument name="fileGeneratorTypes" xsi:type="array">
576+
<item name="less" xsi:type="object">fileassemblerFileGenerator</item>
585577
</argument>
586578
</arguments>
587-
</virtualType>
588-
<virtualType name="lessFileGeneratorPublisher" type="Magento\Framework\App\View\Asset\Publisher">
579+
</type>
580+
<virtualType name="fileassemblerFileGenerator" type="Magento\Framework\Less\FileGenerator">
589581
<arguments>
590-
<argument name="materializationStrategyFactory" xsi:type="object">lessFileGeneratorMaterialization</argument>
582+
<argument name="relatedGenerator" xsi:type="object">fileassemblerRelatedFilesGenerator</argument>
591583
</arguments>
592584
</virtualType>
593-
<type name="Magento\Framework\Less\FileGenerator">
585+
<virtualType name="fileassemblerRelatedFilesGenerator" type="Magento\Developer\Model\Less\FileGenerator\PublicationDecorator">
594586
<arguments>
595-
<argument name="publisher" xsi:type="object">lessFileGeneratorPublisher</argument>
587+
<argument name="publisher" xsi:type="object">developerPublisher</argument>
596588
</arguments>
597-
</type>
589+
</virtualType>
598590
<virtualType name="fallbackResolverSimpleWithGroupedCache" type="Magento\Framework\View\Design\FileResolution\Fallback\Resolver\Simple">
599591
<arguments>
600592
<argument name="cache" xsi:type="object">Magento\Framework\View\Design\FileResolution\Fallback\CacheData\Grouped</argument>

dev/tools/Magento/Tools/Webdev/App/FileAssembler.php

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Magento\Framework\App;
1010
use Magento\Framework\App\State;
1111
use Magento\Framework\AppInterface;
12+
use Magento\Framework\Filesystem;
1213
use Magento\Tools\Webdev\CliParams;
1314
use Magento\Tools\View\Deployer\Log;
1415
use Magento\Framework\View\Asset\Source;
@@ -18,6 +19,7 @@
1819
use Magento\Framework\App\ObjectManager\ConfigLoader;
1920
use Magento\Framework\View\Asset\SourceFileGeneratorPool;
2021
use Magento\Framework\View\Asset\PreProcessor\ChainFactoryInterface;
22+
use Magento\Framework\App\Filesystem\DirectoryList;
2123

2224
/**
2325
* Class FileAssembler
@@ -60,7 +62,7 @@ class FileAssembler implements AppInterface
6062
/**
6163
* @var \Magento\Framework\Less\FileGenerator
6264
*/
63-
private $sourceFileGeneratorPoll;
65+
private $sourceFileGeneratorPool;
6466

6567
/**
6668
* @var \Magento\Framework\View\Asset\Source
@@ -77,6 +79,11 @@ class FileAssembler implements AppInterface
7779
*/
7880
private $chainFactory;
7981

82+
/**
83+
* @var Filesystem
84+
*/
85+
private $filesystem;
86+
8087
/**
8188
* @param ObjectManagerInterface $objectManager
8289
* @param Response $response
@@ -88,6 +95,7 @@ class FileAssembler implements AppInterface
8895
* @param \Magento\Framework\View\Asset\SourceFileGeneratorPool $sourceFileGeneratorPoll
8996
* @param \Magento\Tools\View\Deployer\Log $logger
9097
* @param ChainFactoryInterface $chainFactory
98+
* @param Filesystem $filesystem
9199
*
92100
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
93101
*/
@@ -101,18 +109,20 @@ public function __construct(
101109
Source $assetSource,
102110
SourceFileGeneratorPool $sourceFileGeneratorPoll,
103111
Log $logger,
104-
ChainFactoryInterface $chainFactory
112+
ChainFactoryInterface $chainFactory,
113+
Filesystem $filesystem
105114
) {
106115
$this->response = $response;
107116
$this->params = $params;
108117
$this->state = $state;
109118
$this->objectManager = $objectManager;
110119
$this->configLoader = $configLoader;
111120
$this->assetRepo = $assetRepo;
112-
$this->sourceFileGeneratorPoll = $sourceFileGeneratorPoll;
121+
$this->sourceFileGeneratorPool = $sourceFileGeneratorPoll;
113122
$this->assetSource = $assetSource;
114123
$this->logger = $logger;
115124
$this->chainFactory = $chainFactory;
125+
$this->filesystem = $filesystem;
116126
}
117127

118128
/**
@@ -125,7 +135,7 @@ public function launch()
125135
$this->state->setAreaCode($this->params->getArea());
126136
$this->objectManager->configure($this->configLoader->load($this->params->getArea()));
127137

128-
$sourceFileGenerator = $this->sourceFileGeneratorPoll->create($this->params->getExt());
138+
$sourceFileGenerator = $this->sourceFileGeneratorPool->create($this->params->getExt());
129139

130140
foreach ($this->params->getFiles() as $file) {
131141
$file .= '.' . $this->params->getExt();
@@ -152,7 +162,13 @@ public function launch()
152162
]
153163
);
154164

155-
$sourceFileGenerator->generateFileTree($chain);
165+
$processedCoreFile = $sourceFileGenerator->generateFileTree($chain);
166+
167+
$targetDir = $this->filesystem->getDirectoryWrite(DirectoryList::STATIC_VIEW);
168+
$rootDir = $this->filesystem->getDirectoryWrite(DirectoryList::ROOT);
169+
$source = $rootDir->getRelativePath($processedCoreFile);
170+
$destination = $asset->getPath();
171+
$rootDir->copyFile($source, $destination, $targetDir);
156172

157173
$this->logger->logMessage("Done");
158174
}

dev/tools/Magento/Tools/Webdev/file_assembler.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@
3535
$logger = new Log($params->getVerbose());
3636

3737
} catch (\Zend_Console_Getopt_Exception $e) {
38-
echo $e->getUsageMessage();
39-
echo 'Please, use quotes(") for wrapping strings.' . "\n";
38+
echo $e->getMessage() . PHP_EOL;
39+
echo 'Please, use quotes(") for wrapping strings.' . PHP_EOL;
4040
exit(1);
4141
}
4242

4343
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
4444
/** @var \Magento\Framework\App\Http $app */
4545
$app = $bootstrap->createApplication(
46-
'Magento\Tools\WebDev\App\FileAssembler',
46+
'Magento\Tools\Webdev\App\FileAssembler',
4747
['params' => $params, 'logger' => $logger]
4848
);
4949
$bootstrap->run($app);
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Framework\Less;
7+
8+
use Magento\Framework\App\Filesystem\DirectoryList;
9+
10+
class Config
11+
{
12+
/**
13+
* Temporary directory prefix
14+
*/
15+
const TMP_LESS_DIR = 'less';
16+
17+
/**
18+
* Returns relative path to less materialization directory
19+
*
20+
* @return string
21+
*/
22+
public function getLessMaterializationRelativePath()
23+
{
24+
return DirectoryList::TMP_MATERIALIZATION_DIR . '/' . self::TMP_LESS_DIR;
25+
}
26+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
/**
3+
* Copyright © 2015 Magento. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
namespace Magento\Framework\Less\File;
7+
8+
use Magento\Framework\App\Filesystem\DirectoryList;
9+
use Magento\Framework\Filesystem;
10+
use Magento\Framework\Less\Config;
11+
12+
class Temporary
13+
{
14+
/**
15+
* @var Config
16+
*/
17+
private $config;
18+
19+
/**
20+
* @var Filesystem\Directory\WriteInterface
21+
*/
22+
private $tmpDirectory;
23+
24+
/**
25+
* @param Filesystem $filesystem
26+
* @param Config $config
27+
*/
28+
public function __construct(
29+
Filesystem $filesystem,
30+
Config $config
31+
) {
32+
$this->tmpDirectory = $filesystem->getDirectoryWrite(DirectoryList::VAR_DIR);
33+
$this->config = $config;
34+
}
35+
36+
/**
37+
* Write down contents to a temporary file and return its absolute path
38+
*
39+
* @param string $relativePath
40+
* @param string $contents
41+
* @return string
42+
*/
43+
public function createFile($relativePath, $contents)
44+
{
45+
$filePath = $this->config->getLessMaterializationRelativePath() . '/' . $relativePath;
46+
47+
if (!$this->tmpDirectory->isExist($filePath)) {
48+
$this->tmpDirectory->writeFile($filePath, $contents);
49+
}
50+
return $this->tmpDirectory->getAbsolutePath($filePath);
51+
}
52+
}

0 commit comments

Comments
 (0)