/**
  * 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);
 }