DeployRequireJsConfig.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Deploy\Service;
  7. use Magento\Framework\Locale\ResolverInterfaceFactory;
  8. use Magento\Framework\Locale\ResolverInterface;
  9. use Magento\RequireJs\Model\FileManagerFactory;
  10. use Magento\Framework\View\DesignInterfaceFactory;
  11. use Magento\Framework\View\Design\Theme\ListInterface;
  12. use Magento\Framework\View\Asset\RepositoryFactory;
  13. use Magento\Framework\RequireJs\ConfigFactory;
  14. /**
  15. * Deploy RequireJS configuration service
  16. */
  17. class DeployRequireJsConfig
  18. {
  19. /**
  20. * Default jobs amount
  21. */
  22. const DEFAULT_JOBS_AMOUNT = 4;
  23. /**
  24. * @var ListInterface
  25. */
  26. private $themeList;
  27. /**
  28. * @var DesignInterfaceFactory
  29. */
  30. private $designFactory;
  31. /**
  32. * @var RepositoryFactory
  33. */
  34. private $assetRepoFactory;
  35. /**
  36. * @var FileManagerFactory
  37. */
  38. private $fileManagerFactory;
  39. /**
  40. * @var ConfigFactory
  41. */
  42. private $requireJsConfigFactory;
  43. /**
  44. * @var ResolverInterfaceFactory
  45. */
  46. private $localeFactory;
  47. /**
  48. * DeployRequireJsConfig constructor
  49. *
  50. * @param ListInterface $themeList
  51. * @param DesignInterfaceFactory $designFactory
  52. * @param RepositoryFactory $assetRepoFactory
  53. * @param FileManagerFactory $fileManagerFactory
  54. * @param ConfigFactory $requireJsConfigFactory
  55. * @param ResolverInterfaceFactory $localeFactory
  56. */
  57. public function __construct(
  58. ListInterface $themeList,
  59. DesignInterfaceFactory $designFactory,
  60. RepositoryFactory $assetRepoFactory,
  61. FileManagerFactory $fileManagerFactory,
  62. ConfigFactory $requireJsConfigFactory,
  63. ResolverInterfaceFactory $localeFactory
  64. ) {
  65. $this->themeList = $themeList;
  66. $this->designFactory = $designFactory;
  67. $this->assetRepoFactory = $assetRepoFactory;
  68. $this->fileManagerFactory = $fileManagerFactory;
  69. $this->requireJsConfigFactory = $requireJsConfigFactory;
  70. $this->localeFactory = $localeFactory;
  71. }
  72. /**
  73. * @param string $areaCode
  74. * @param string $themePath
  75. * @param string $localeCode
  76. * @return bool true on success
  77. */
  78. public function deploy($areaCode, $themePath, $localeCode)
  79. {
  80. /** @var \Magento\Framework\View\Design\ThemeInterface $theme */
  81. $theme = $this->themeList->getThemeByFullPath($areaCode . '/' . $themePath);
  82. /** @var \Magento\Theme\Model\View\Design $design */
  83. $design = $this->designFactory->create()->setDesignTheme($theme, $areaCode);
  84. /** @var ResolverInterface $locale */
  85. $locale = $this->localeFactory->create();
  86. $locale->setLocale($localeCode);
  87. $design->setLocale($locale);
  88. $assetRepo = $this->assetRepoFactory->create(['design' => $design]);
  89. /** @var \Magento\RequireJs\Model\FileManager $fileManager */
  90. $fileManager = $this->fileManagerFactory->create(
  91. [
  92. 'config' => $this->requireJsConfigFactory->create(
  93. [
  94. 'assetRepo' => $assetRepo,
  95. 'design' => $design,
  96. ]
  97. ),
  98. 'assetRepo' => $assetRepo,
  99. ]
  100. );
  101. $fileManager->createRequireJsConfigAsset();
  102. $fileManager->createMinResolverAsset();
  103. return true;
  104. }
  105. }