/** * Renders API documentation files * @param array $sourceDirs * @param string $targetDir * @return integer */ public function actionIndex(array $sourceDirs, $targetDir) { $renderer = $this->findRenderer($this->template); $targetDir = $this->normalizeTargetDir($targetDir); if ($targetDir === false || $renderer === false) { return 1; } if ($this->pageTitle !== null) { $renderer->pageTitle = $this->pageTitle; } if ($renderer->guideUrl === null) { $renderer->guideUrl = './'; } $renderer->guidePrefix = $this->guidePrefix; // setup reference to apidoc if ($this->apiDocs !== null) { $path = $this->apiDocs; if ($renderer->apiUrl === null) { $renderer->apiUrl = $path; } // use relative paths relative to targetDir if (strncmp($path, '.', 1) === 0) { $renderer->apiContext = $this->loadContext("{$targetDir}/{$path}"); } else { $renderer->apiContext = $this->loadContext($path); } } elseif (file_exists($targetDir . '/cache/apidoc.data')) { if ($renderer->apiUrl === null) { $renderer->apiUrl = './'; } $renderer->apiContext = $this->loadContext($targetDir); } else { $renderer->apiContext = new Context(); } $this->updateContext($renderer->apiContext); // read blocktypes translations ApiMarkdown::$blockTranslations = []; foreach ($sourceDirs as $dir) { if (is_file("{$dir}/blocktypes.json")) { ApiMarkdown::$blockTranslations = Json::decode(file_get_contents("{$dir}/blocktypes.json"), true); } } // search for files to process if (($files = $this->searchFiles($sourceDirs)) === false) { return 1; } $renderer->controller = $this; $renderer->render($files, $targetDir); $this->stdout('Publishing images...'); foreach ($sourceDirs as $source) { $imageDir = rtrim($source, '/\\') . '/images'; if (file_exists($imageDir)) { FileHelper::copyDirectory($imageDir, $targetDir . '/images'); } } $this->stdout('done.' . PHP_EOL, Console::FG_GREEN); }