src/Composer/Command/InitCommand.php
protected function execute(InputInterface $input, OutputInterface $output)
    {
        $io = $this->getIO();

        $whitelist = array('name', 'description', 'author', 'type', 'homepage', 'require', 'require-dev', 'stability', 'license');
        $options = array_filter(array_intersect_key($input->getOptions(), array_flip($whitelist)));

        if (isset($options['author'])) {
            $options['authors'] = $this->formatAuthors($options['author']);
            unset($options['author']);
        }

        $repositories = $input->getOption('repository');
        if ($repositories) {
            $config = Factory::createConfig($io);
            foreach ($repositories as $repo) {
                $options['repositories'][] = RepositoryFactory::configFromString($io, $config, $repo);
            }
        }

        if (isset($options['stability'])) {
            $options['minimum-stability'] = $options['stability'];
            unset($options['stability']);
        }

        $options['require'] = isset($options['require']) ? $this->formatRequirements($options['require']) : new \stdClass;
        if (array() === $options['require']) {
            $options['require'] = new \stdClass;
        }

        if (isset($options['require-dev'])) {
            $options['require-dev'] = $this->formatRequirements($options['require-dev']);
            if (array() === $options['require-dev']) {
                $options['require-dev'] = new \stdClass;
            }
        }

        $file = new JsonFile(Factory::getComposerFile());
        $json = $file->encode($options);

        if ($input->isInteractive()) {
            $io->writeError(array('', $json, ''));
            if (!$io->askConfirmation('Do you confirm generation [<comment>yes</comment>]? ', true)) {
                $io->writeError('<error>Command aborted</error>');

                return 1;
            }
        }

        $file->write($options);

        if ($input->isInteractive() && is_dir('.git')) {
            $ignoreFile = realpath('.gitignore');

            if (false === $ignoreFile) {
                $ignoreFile = realpath('.') . '/.gitignore';
            }

            if (!$this->hasVendorIgnore($ignoreFile)) {
                $question = 'Would you like the <info>vendor</info> directory added to your <info>.gitignore</info> [<comment>yes</comment>]? ';

                if ($io->askConfirmation($question, true)) {
                    $this->addVendorIgnore($ignoreFile);
                }
            }
        }

        $question = 'Would you like to install dependencies now [<comment>yes</comment>]? ';
        if ($input->isInteractive() && $this->hasDependencies($options) && $io->askConfirmation($question, true)) {
            $this->installDependencies($output);
        }
    }
protected function execute(InputInterface $input, OutputInterface $output)
    {
        $io = $this->getIO();

        $whitelist = array('name', 'description', 'author', 'type', 'homepage', 'require', 'require-dev', 'stability', 'license');
        $options = array_filter(array_intersect_key($input->getOptions(), array_flip($whitelist)));

        if (isset($options['author'])) {
            $options['authors'] = $this->formatAuthors($options['author']);
            unset($options['author']);
        }

        $repositories = $input->getOption('repository');
        if ($repositories) {
            $config = Factory::createConfig($io);
            foreach ($repositories as $repo) {
                $options['repositories'][] = RepositoryFactory::configFromString($io, $config, $repo);
            }
        }

        if (isset($options['stability'])) {
            $options['minimum-stability'] = $options['stability'];
            unset($options['stability']);
        }

        $options['require'] = isset($options['require']) ? $this->formatRequirements($options['require']) : new \stdClass;
        if (array() === $options['require']) {
            $options['require'] = new \stdClass;
        }

        if (isset($options['require-dev'])) {
            $options['require-dev'] = $this->formatRequirements($options['require-dev']);
            if (array() === $options['require-dev']) {
                $options['require-dev'] = new \stdClass;
            }
        }

        $file = new JsonFile(Factory::getComposerFile());
        $json = $file->encode($options);

        if ($input->isInteractive()) {
            $io->writeError(array('', $json, ''));
            if (!$io->askConfirmation('Do you confirm generation [<comment>yes</comment>]? ', true)) {
                $io->writeError('<error>Command aborted</error>');

                return 1;
            }
        }

        $file->write($options);

        if ($input->isInteractive() && is_dir('.git')) {
            $ignoreFile = realpath('.gitignore');

            if (false === $ignoreFile) {
                $ignoreFile = realpath('.') . '/.gitignore';
            }

            if (!$this->hasVendorIgnore($ignoreFile)) {
                $question = 'Would you like the <info>vendor</info> directory added to your <info>.gitignore</info> [<comment>yes</comment>]? ';

                if ($io->askConfirmation($question, true)) {
                    $this->addVendorIgnore($ignoreFile);
                }
            }
        }

        $question = 'Would you like to install dependencies now [<comment>yes</comment>]? ';
        if ($input->isInteractive() && $this->hasDependencies($options) && $io->askConfirmation($question, true)) {
            $this->installDependencies($output);
        }
    }
protected function execute ( InputInterface $ input , OutputInterface $ output ) { $ io = $ this -> getIO ( ) ; $ whitelist = array ( 'name' , 'description' , 'author' , 'type' , 'homepage' , 'require' , 'require-dev' , 'stability' , 'license' ) ; $ options = array_filter ( array_intersect_key ( $ input -> getOptions ( ) , array_flip ( $ whitelist ) ) ) ; if ( isset ( $ options [ 'author' ] ) ) { $ options [ 'authors' ] = $ this -> formatAuthors ( $ options [ 'author' ] ) ; unset ( $ options [ 'author' ] ) ; } $ repositories = $ input -> getOption ( 'repository' ) ; if ( $ repositories ) { $ config = Factory :: createConfig ( $ io ) ; foreach ( $ repositories as $ repo ) { $ options [ 'repositories' ] [ ] = RepositoryFactory :: configFromString ( $ io , $ config , $ repo ) ; } } if ( isset ( $ options [ 'stability' ] ) ) { $ options [ 'minimum-stability' ] = $ options [ 'stability' ] ; unset ( $ options [ 'stability' ] ) ; } $ options [ 'require' ] = isset ( $ options [ 'require' ] ) ? $ this -> formatRequirements ( $ options [ 'require' ] ) : new \ stdClass ; if ( array ( ) === $ options [ 'require' ] ) { $ options [ 'require' ] = new \ stdClass ; } if ( isset ( $ options [ 'require-dev' ] ) ) { $ options [ 'require-dev' ] = $ this -> formatRequirements ( $ options [ 'require-dev' ] ) ; if ( array ( ) === $ options [ 'require-dev' ] ) { $ options [ 'require-dev' ] = new \ stdClass ; } } $ file = new JsonFile ( Factory :: getComposerFile ( ) ) ; $ json = $ file -> encode ( $ options ) ; if ( $ input -> isInteractive ( ) ) { $ io -> writeError ( array ( '' , $ json , '' ) ) ; if ( ! $ io -> askConfirmation ( 'Do you confirm generation [<comment>yes</comment>]? ' , true ) ) { $ io -> writeError ( '<error>Command aborted</error>' ) ; return 1 ; } } $ file -> write ( $ options ) ; if ( $ input -> isInteractive ( ) && is_dir ( '.git' ) ) { $ ignoreFile = realpath ( '.gitignore' ) ; if ( false === $ ignoreFile ) { $ ignoreFile = realpath ( '.' ) . '/.gitignore' ; } if ( ! $ this -> hasVendorIgnore ( $ ignoreFile ) ) { $ question = 'Would you like the <info>vendor</info> directory added to your <info>.gitignore</info> [<comment>yes</comment>]? ' ; if ( $ io -> askConfirmation ( $ question , true ) ) { $ this -> addVendorIgnore ( $ ignoreFile ) ; } } } $ question = 'Would you like to install dependencies now [<comment>yes</comment>]? ' ; if ( $ input -> isInteractive ( ) && $ this -> hasDependencies ( $ options ) && $ io -> askConfirmation ( $ question , true ) ) { $ this -> installDependencies ( $ output ) ; } }
{@inheritdoc}
{