public function buildAll()

in src/build/GuidesHTMLBuildStep.php [24:107]


  public function buildAll(): void {
    Log::i("\nGuidesHTMLBuild");
    $sources = self::findSources(self::SOURCE_ROOT, Set {'md'})
      |> Vec\filter($$, $path ==> \basename($path) !== 'README.md')
      |> Vec\sort($$);

    $this->renderFiles($sources);

    Log::i("\nCreating categories");
    $categories = \glob(self::SOURCE_ROOT.'/*/*/*-category.txt')
      |> Vec\map($$, $path ==> Str\strip_prefix($path, self::SOURCE_ROOT.'/'))
      |> Vec\sort($$);

    $category_index = $this->createCategoryIndex($categories);

    Log::i("\nCreating summaries");
    $summaries = \glob(self::SOURCE_ROOT.'/*/*/*-summary.txt')
      |> Vec\map($$, $path ==> Str\strip_prefix($path, self::SOURCE_ROOT.'/'))
      |> Vec\sort($$);

    $summary_index = $this->createSummaryIndex($summaries);

    $cg = $this->getCodegenFactory();

    $cg->codegenFile(BuildPaths::GUIDES_CATEGORY)
      ->setNamespace("HHVM\\UserDocumentation")
      ->addClass(
        $cg->codegenClass('GuidesCategoryData')
          ->setIsFinal(true)
          ->setIsAbstract(true)
          ->addMethod(
            $cg->codegenMethod('getData')
              ->setIsStatic(true)
              ->setReturnType('dict<GuidesProduct, dict<string, string>>')
              ->setBody(
                $cg->codegenHackBuilder()
                  ->addReturn(
                    $category_index,
                    CG\HackBuilderValues::dict(
                      CG\HackBuilderKeys::lambda(
                        ($_, $v) ==> Str\format(
                          "GuidesProduct::%s",
                          GuidesProduct::getNames()[$v],
                        ),
                      ),
                      CG\HackBuilderValues::export(),
                    ),
                  )
                  ->getCode(),
              ),
          ),
      )
      ->save();

    $cg->codegenFile(BuildPaths::GUIDES_SUMMARY)
      ->setNamespace("HHVM\\UserDocumentation")
      ->addClass(
        $cg->codegenClass('GuidesSummaryData')
          ->setIsFinal(true)
          ->setIsAbstract(true)
          ->addMethod(
            $cg->codegenMethod('getData')
              ->setIsStatic(true)
              ->setReturnType('dict<GuidesProduct, dict<string, string>>')
              ->setBody(
                $cg->codegenHackBuilder()
                  ->addReturn(
                    $summary_index,
                    CG\HackBuilderValues::dict(
                      CG\HackBuilderKeys::lambda(
                        ($_, $v) ==> Str\format(
                          "GuidesProduct::%s",
                          GuidesProduct::getNames()[$v],
                        ),
                      ),
                      CG\HackBuilderValues::export(),
                    ),
                  )
                  ->getCode(),
              ),
          ),
      )
      ->save();
  }