contentz-tech/build

View on GitHub
src/build.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { IState } from "./state";
import { makeDir, del } from "./utils/fs";
import { write as writeCache } from "./utils/cache";

// Builders
import { builder as analytics } from "./builders/analytics";
import { builder as articles } from "./builders/articles";
import { builder as error } from "./builders/error";
import { builder as feed } from "./builders/feed";
import { builder as home } from "./builders/home";
import { builder as links } from "./builders/links";
import { builder as pages } from "./builders/pages";
import { builder as resume } from "./builders/resume";
import { builder as robots } from "./builders/robots";
import { builder as sitemap } from "./builders/sitemap";
import { builder as slides } from "./builders/slides";
import { builder as statics } from "./builders/statics";
import { builder as sw } from "./builders/sw";

async function build(state: IState): Promise<void> {
  try {
    if (!state.config.incremental) {
      await Promise.all([del(".cache"), del("public")]);
    }

    await Promise.all([makeDir(".tmp"), makeDir("public")]);

    await Promise.all([
      await Promise.all([
        articles(state),
        error(state),
        home(state),
        links(state),
        pages(state),
        resume(state),
        slides(state)
      ]),
      await Promise.all([
        analytics(state),
        feed(state),
        robots(state),
        sitemap(state),
        statics(state),
        sw(state)
      ])
    ]);

    if (state.config.incremental) await writeCache(state);
  } catch (error) {
    await del("public");
    throw error;
  } finally {
    await del(".tmp");
  }
}

export { build };