private function createIndex()

in src/build/GuidesIndexBuildStep.php [30:73]


  private function createIndex(Traversable<string> $list): void {
    $index = $this->generateIndexData($list);

    $cg = $this->getCodegenFactory();
    $cg->codegenFile(BuildPaths::GUIDES_INDEX)
      ->setNamespace("HHVM\\UserDocumentation")
      ->addClass(
        $cg->codegenClass('GuidesIndexData')
          ->setIsFinal(true)
          ->setIsAbstract(true)
          ->addMethod(
            $cg->codegenMethod('getIndex')
              ->setIsStatic(true)
              ->setReturnType(
                'dict<GuidesProduct, dict<string, dict<string, string>>>',
              )
              ->setBody(
                $cg->codegenHackBuilder()
                  ->addReturn(
                    $index,
                    CG\HackBuilderValues::dict(
                      CG\HackBuilderKeys::lambda(
                        ($_, $p) ==> Str\format(
                          'GuidesProduct::%s',
                          GuidesProduct::getNames()[$p],
                        ),
                      ),
                      CG\HackBuilderValues::dict(
                        CG\HackBuilderKeys::export(),
                        CG\HackBuilderValues::dict(
                          CG\HackBuilderKeys::export(),
                          CG\HackBuilderValues::export(),
                        ),
                      ),
                    ),
                  )
                  ->getCode(),
              ),
          ),
      )
      ->save();
    // Make it available to later build steps
    require_once(BuildPaths::GUIDES_INDEX);
  }