12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- /**
- * @package Grav\Common
- *
- * @copyright Copyright (C) 2015 - 2019 Trilby Media, LLC. All rights reserved.
- * @license MIT License; see LICENSE file for details.
- */
- namespace Grav\Common;
- class Composer
- {
- /** @const Default composer location */
- const DEFAULT_PATH = 'bin/composer.phar';
- /**
- * Returns the location of composer.
- *
- * @return string
- */
- public static function getComposerLocation()
- {
- if (!\function_exists('shell_exec') || stripos(PHP_OS, 'win') === 0) {
- return self::DEFAULT_PATH;
- }
- // check for global composer install
- $path = trim(shell_exec('command -v composer'));
- // fall back to grav bundled composer
- if (!$path || !preg_match('/(composer|composer\.phar)$/', $path)) {
- $path = self::DEFAULT_PATH;
- }
- return $path;
- }
- /**
- * Return the composer executable file path
- *
- * @return string
- */
- public static function getComposerExecutor()
- {
- $executor = PHP_BINARY . ' ';
- $composer = static::getComposerLocation();
- if ($composer !== static::DEFAULT_PATH && is_executable($composer)) {
- $file = fopen($composer, 'rb');
- $firstLine = fgets($file);
- fclose($file);
- if (!preg_match('/^#!.+php/i', $firstLine)) {
- $executor = '';
- }
- }
- return $executor . $composer;
- }
- }
|