ComposerFactory.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Composer;
  7. use Composer\IO\BufferIO;
  8. use Magento\Framework\App\Filesystem\DirectoryList;
  9. class ComposerFactory
  10. {
  11. /**
  12. * @var DirectoryList
  13. */
  14. private $directoryList;
  15. /**
  16. * @var ComposerJsonFinder
  17. */
  18. private $composerJsonFinder;
  19. /**
  20. * @param DirectoryList $directoryList
  21. * @param ComposerJsonFinder $composerJsonFinder
  22. */
  23. public function __construct(
  24. DirectoryList $directoryList,
  25. ComposerJsonFinder $composerJsonFinder
  26. ) {
  27. $this->directoryList = $directoryList;
  28. $this->composerJsonFinder = $composerJsonFinder;
  29. }
  30. /**
  31. * Create \Composer\Composer
  32. *
  33. * @return \Composer\Composer
  34. * @throws \Exception
  35. */
  36. public function create()
  37. {
  38. putenv('COMPOSER_HOME=' . $this->directoryList->getPath(DirectoryList::COMPOSER_HOME));
  39. return \Composer\Factory::create(
  40. new BufferIO(),
  41. $this->composerJsonFinder->findComposerJson()
  42. );
  43. }
  44. }