setName('require-recipe'); $this->setDescription('Invoke this command to inline a recipe into your root composer.json'); $this->addArgument( 'recipe', InputArgument::REQUIRED, 'Recipe name to require inline' ); $this->addArgument( 'version', InputArgument::OPTIONAL, 'Version or constraint to require' ); $this->addUsage('silverstripe/recipe-blogging 1.0.0'); $this->setHelp( <<composer require-recipe silverstripe/recipe-blogging 1.0.0 adds the following: "require": { "silverstripe/blog": "3.0.0", "silverstripe/lumberjack": "3.0.1", "silverstripe/comments": "2.1.0" }, "provide": { "silverstripe/recipe-blogging": "1.0.0" } HELP ); } public function execute(InputInterface $input, OutputInterface $output) { $recipe = $input->getArgument('recipe'); $constraint = $input->getArgument('version'); // Check if this is already installed and notify users $installedVersion = $this->findInstalledVersion($recipe); // Install recipe return $this->installRecipe($output, $recipe, $constraint, $installedVersion); } }