command = $pathToComposer; if (!$this->command) { $this->command = $this->findExecutablePhar('composer'); } if (!$this->command) { throw new TaskException(__CLASS__, "Neither local composer.phar nor global composer installation could be found."); } } /** * adds `prefer-dist` option to composer * * @return $this */ public function preferDist($preferDist = true) { if (!$preferDist) { return $this->preferSource(); } $this->prefer = '--prefer-dist'; return $this; } /** * adds `prefer-source` option to composer * * @return $this */ public function preferSource() { $this->prefer = '--prefer-source'; return $this; } /** * adds `dev` option to composer * * @return $this */ public function dev($dev = true) { if (!$dev) { return $this->noDev(); } $this->dev = '--dev'; return $this; } /** * adds `no-dev` option to composer * * @return $this */ public function noDev() { $this->dev = '--no-dev'; return $this; } /** * adds `ansi` option to composer * * @return $this */ public function ansi($ansi = true) { if (!$ansi) { return $this->noAnsi(); } $this->ansi = '--ansi'; return $this; } /** * adds `no-ansi` option to composer * * @return $this */ public function noAnsi() { $this->ansi = '--no-ansi'; return $this; } public function interaction($interaction = true) { if (!$interaction) { return $this->noInteraction(); } return $this; } /** * adds `no-interaction` option to composer * * @return $this */ public function noInteraction() { $this->nointeraction = '--no-interaction'; return $this; } /** * adds `optimize-autoloader` option to composer * * @return $this */ public function optimizeAutoloader($optimize = true) { if ($optimize) { $this->option('--optimize-autoloader'); } return $this; } /** * adds `ignore-platform-reqs` option to composer * * @return $this */ public function ignorePlatformRequirements($ignore = true) { $this->option('--ignore-platform-reqs'); return $this; } /** * disable plugins * * @return $this */ public function disablePlugins($disable = true) { if ($disable) { $this->option('--no-plugins'); } return $this; } /** * skip scripts * * @return $this */ public function noScripts($disable = true) { if ($disable) { $this->option('--no-scripts'); } return $this; } /** * adds `--working-dir $dir` option to composer * * @return $this */ public function workingDir($dir) { $this->option("--working-dir", $dir); return $this; } /** * Copy class fields into command options as directed. */ public function buildCommand() { if (!isset($this->ansi) && $this->getConfig()->get(\Robo\Config\Config::DECORATED)) { $this->ansi(); } if (!isset($this->nointeraction) && !$this->getConfig()->get(\Robo\Config\Config::INTERACTIVE)) { $this->noInteraction(); } $this->option($this->prefer) ->option($this->dev) ->option($this->nointeraction) ->option($this->ansi); } /** * {@inheritdoc} */ public function getCommand() { if (!$this->built) { $this->buildCommand(); $this->built = true; } return "{$this->command} {$this->action}{$this->arguments}"; } }