/** * Test that adding arguments works. * * @return void */ public function testAddCommandLineArgument() { $config = new TensideJsonConfig(new JsonArray()); $this->assertEquals(null, $config->getPhpCliArguments()); $this->assertSame($config, $config->addCommandLineArgument('test1')); $this->assertEquals(['test1'], $config->getPhpCliArguments()); $this->assertSame($config, $config->addCommandLineArgument('test2')); $this->assertEquals(['test1', 'test2'], $config->getPhpCliArguments()); }
/** * Retrieve the command line arguments to use. * * @param array $additionalArguments The additional arguments to add to the call. * * @return string */ private function getArguments($additionalArguments) { $arguments = []; if (null !== ($cliArguments = $this->config->getPhpCliArguments())) { foreach ($cliArguments as $argument) { $arguments[] = $argument; } } $arguments = array_map('escapeshellarg', array_merge($arguments, $additionalArguments)); return implode(' ', $arguments); }
/** * Build the internal process builder. * * @param array $arguments The arguments. * * @return ProcessBuilder */ private function buildInternal(array $arguments) { $builder = ProcessBuilder::create($this->config->getPhpCliBinary()); if (null !== ($cliArguments = $this->config->getPhpCliArguments())) { $builder->addArguments($cliArguments); } $builder->addArguments($arguments); if (null !== ($environment = $this->config->getPhpCliEnvironment())) { foreach ($environment as $name => $value) { $builder->setEnv($name, $value); } } // MUST be kept last. $builder->setEnv('COMPOSER', $this->homePath . DIRECTORY_SEPARATOR . 'composer.json'); return $builder; }