/** * @inheritdoc */ public function run(ArrayAccess $paths) { $dest = $this->targetPath($paths); if (!$this->overwrite->should($dest)) { $this->io->comment(" - {$this->name} skipped."); return; } $this->actionSource[0] === 'download' ? $this->download($this->actionSource[1], $dest) : $this->copy($this->actionSource[1], $dest, $paths); }
/** * Fetch languages from wordpress.org API. * * @param bool $ssl * @return array|bool */ private function fetchLanguages($ssl = true) { static $languages; if (!is_null($languages)) { return $languages; } $url = $ssl ? 'https' : 'http'; $url .= '://api.wordpress.org/translations/core/1.0/?version='; $remote = new UrlDownloader($url . $this->config['wp-version']); $result = $remote->fetch(true); if (!$result) { return $ssl ? $this->fetchLanguages(false) : false; } try { $all = (array) json_decode($result, true); $languages = isset($all['translations']) ? array() : false; if (is_array($languages)) { foreach ($all['translations'] as $lang) { $languages[] = $lang['language']; } } } catch (Exception $e) { $languages = false; } if ($languages === false) { $this->io->comment('Error on loading languages from wordpress.org'); } return $languages; }
/** * Download .gitignore from a given url. * * @param \ArrayAccess $paths * @return int */ private function download(ArrayAccess $paths) { if (!UrlDownloader::checkSoftware()) { $this->io->comment('WP Starter needs cUrl installed to download files from url.'); return $this->create($paths); } $remote = new UrlDownloader($this->config); if ($remote->save($this->targetPath($paths))) { return self::SUCCESS; } $this->error = 'Error on downloading and saving .gitignore. ' . $remote->error(); return self::ERROR; }
/** * Download a remote .env.example in root folder. * * @param string $url * @param string $dest * @param \ArrayAccess $paths * @return int */ private function download($url, $dest, ArrayAccess $paths) { if (!UrlDownloader::checkSoftware()) { $this->io->comment('WP Starter needs cUrl installed to download files from url.'); return $this->copy($paths, $dest); } $remote = new UrlDownloader($url); if (!$remote->save($dest)) { $this->error = 'Error on downloading and save .env.example: ' . $remote->error() . '.'; return self::ERROR; } return self::SUCCESS; }
/** * @param \WCM\WPStarter\Setup\Steps\StepInterface $step * @param \ArrayAccess $paths * @return bool */ private function shouldProcess(StepInterface $step, ArrayAccess $paths) { $comment = ''; $process = $step->allowed($this->config, $paths); if ($process && $step instanceof FileStepInterface) { /** @var \WCM\WPStarter\Setup\Steps\FileStepInterface $step */ $path = $step->targetPath($paths); $process = $this->overwrite->should($path); $comment = $process ? '' : '- ' . basename($path) . ' exists and will be preserved.'; } if ($process && $step instanceof OptionalStepInterface) { /** @var \WCM\WPStarter\Setup\Steps\OptionalStepInterface $step */ $process = $step->question($this->config, $this->io); $comment = $process ? '' : $step->skipped(); } $process or $this->io->comment($comment); return $process; }