Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I run composer without user interaction?

I'm trying to run composer install on a cakephp installation, however it asks the user if they want to they want to set folder permissions:

Note, this is an example. In production the composer install command will happen automatically via CI or whatever:

John:$ composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files
> Cake\Composer\Installer\PluginInstaller::postAutoloadDump
> App\Console\Installer::postInstall
Set Folder Permissions ? (Default to Y) [Y,n]?

This is great, but there are times where I want to specify 'yes' from the command line so that my docker install doesn't require interaction, and so that our deployment process can work (there is no user involved!) I've tried several things, inspected the code and googled like mad to no avail.

I'm guessing there's an environment variable I can set to make it default to yes / quiet, but I just can't find what it is.

like image 647
John Hunt Avatar asked Apr 13 '18 08:04

John Hunt


People also ask

What is no interaction?

--no-interaction (-n): The do not ask any interactive question. --no-plugins: This disables all plugins. --no-cache: this disables the use of the cache directory.

How do I run composer?

Installation - Windows# This is the easiest way to get Composer set up on your machine. Download and run Composer-Setup.exe. It will install the latest Composer version and set up your PATH so that you can call composer from any directory in your command line. Note: Close your current terminal.


2 Answers

Try composer install --no-interaction or composer install -n

According to the documentation this triggers Composer to pick the default option whenever an interactive action is necessary:

--no-interaction (-n): Do not ask any interactive question.
like image 96
Loek Avatar answered Sep 20 '22 13:09

Loek


As stated in the previous answers --no-interaction or -n parameter is the official way to disable the regular user interaction on all composer commands. For more information check the available global options: https://getcomposer.org/doc/03-cli.md#global-options

However, Composer sometimes asks for questions that need an answer. For instance:

composer update

...

In GitDownloader.php line 112:
                                                                                                                                   
The .git directory is missing from ..., see https://getcomposer.org/commit-deps for more information

In these cases, if the --no-interaction parameter is specified, then Composer fails with an error.

To avoid the --no-interaction error, the yes command to the rescue:

yes | composer update
like image 38
Anibal Sanchez Avatar answered Sep 18 '22 13:09

Anibal Sanchez