protected function configure()
{
$this->setName('build')->setDescription('Builds a composer repository out of a json file')->setDefinition([new InputArgument('file', InputArgument::OPTIONAL, 'Json file to use', './satis.json'), new InputArgument('output-dir', InputArgument::OPTIONAL, 'Location where to output built files', null), new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that should be built, if not provided all packages are.', null), new InputOption('repository-url', null, InputOption::VALUE_OPTIONAL, 'Only update the repository at given url', null), new InputOption('no-html-output', null, InputOption::VALUE_NONE, 'Turn off HTML view'), new InputOption('skip-errors', null, InputOption::VALUE_NONE, 'Skip Download or Archive errors'), new InputOption('stats', null, InputOption::VALUE_NONE, 'Display the download progress bar')])->setHelp(<<<'EOT'
The <info>build</info> command reads the given json file
(satis.json is used by default) and outputs a composer
repository in the given output-dir.
The json config file accepts the following keys:
- <info>"repositories"</info>: defines which repositories are searched
for packages.
- <info>"output-dir"</info>: where to output the repository files
if not provided as an argument when calling build.
- <info>"require-all"</info>: boolean, if true, all packages present
in the configured repositories will be present in the
dumped satis repository.
- <info>"require"</info>: if you do not want to dump all packages,
you can explicitly require them by name and version.
- <info>"minimum-stability"</info>: sets default stability for packages
(default: dev), see
http://getcomposer.org/doc/04-schema.md#minimum-stability
- <info>"require-dependencies"</info>: if you mark a few packages as
required to mirror packagist for example, setting this
to true will make satis automatically require all of your
requirements' dependencies.
- <info>"require-dev-dependencies"</info>: works like require-dependencies
but requires dev requirements rather than regular ones.
- <info>"config"</info>: all config options from composer, see
http://getcomposer.org/doc/04-schema.md#config
- <info>"output-html"</info>: boolean, controls whether the repository
has an html page as well or not.
- <info>"name"</info>: for html output, this defines the name of the
repository.
- <info>"homepage"</info>: for html output, this defines the home URL
of the repository (where you will host it).
- <info>"twig-template"</info>: Location of twig template to use for
building the html output.
- <info>"abandoned"</info>: Packages that are abandoned. As the key use the
package name, as the value use true or the replacement package.
- <info>"notify-batch"</info>: Allows you to specify a URL that will
be called every time a user installs a package, see
https://getcomposer.org/doc/05-repositories.md#notify-batch
- <info>"include-filename"</info> Specify filename instead of default include/all${SHA1_HASH}.json
EOT
);
}