appengine/flexible/wordpress/wordpress.php (45 lines of code) (raw):

<?php /** * Copyright 2018 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ require_once __DIR__ . '/vendor/autoload.php'; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Google\Cloud\Utils\WordPress\Project; $application = new Application('Wordpress Helper'); $application->add(new Command('setup')) ->setDescription('Setup WordPress on GCP') ->addOption('dir', null, InputOption::VALUE_REQUIRED, 'Directory for the new project', Project::DEFAULT_DIR) ->addOption('project_id', null, InputOption::VALUE_REQUIRED, 'Google Cloud project id') ->addOption('db_region', null, InputOption::VALUE_REQUIRED, 'Cloud SQL region') ->addOption('db_instance', null, InputOption::VALUE_REQUIRED, 'Cloud SQL instance id', 'wp') ->addOption('db_name', null, InputOption::VALUE_REQUIRED, 'Cloud SQL database name', 'wp') ->addOption('db_user', null, InputOption::VALUE_REQUIRED, 'Cloud SQL database username', 'wp') ->addOption('db_password', null, InputOption::VALUE_REQUIRED, 'Cloud SQL database password') ->addOption('local_db_user', null, InputOption::VALUE_REQUIRED, 'Local SQL database username') ->addOption('local_db_password', null, InputOption::VALUE_REQUIRED, 'Local SQL database password') ->addOption('wordpress_url', null, InputOption::VALUE_REQUIRED, 'URL of the WordPress archive', Project::LATEST_WP) ->setCode(function (InputInterface $input, OutputInterface $output) { $wordpress = new Project($input, $output); // Run the wizard to prompt user for project and database parameters. $dir = $wordpress->initializeProject(); $dbParams = $wordpress->initializeDatabase(); // download wordpress and plugins $wordpress->downloadWordpress(); $wordpress->downloadBatcachePlugin(); $wordpress->downloadGcsPlugin(); // populate random key params $params = $dbParams + $wordpress->generateRandomValueParams(); // copy all the sample files into the project dir and replace parameters $wordpress->copyFiles(__DIR__ . '/files', [ 'app.yaml' => '/', 'composer.json' => '/', 'cron.yaml' => '/', 'nginx-app.conf' => '/', 'php.ini' => '/', 'wp-cli.yml' => '/', 'wp-config.php' => '/wordpress/', ], $params); // run composer in the project directory $wordpress->runComposer(); $output->writeln("<info>Your WordPress project is ready at $dir</info>"); }); if (getenv('PHPUNIT_TESTS') === '1') { return $application; } $application->run();