generate static method

Output generate(
  1. BookContext context,
  2. Option opt
)

Implementation

static Output generate(BookContext context, Option opt) {
  final out = opt.root;
  final logger = context.logger;
  logger.d('generate whole book in "$out"');
  createFolder(out);

  for (final book in context.books.values) {
    final at = DateTime.now().millisecondsSinceEpoch;
    final lang = book.langPath;
    logger.i("start to generate book ${lang.isEmpty ? '' : "'$lang'"} ...");
    final output = Output._(
      context,
      ThemeManager.build(
        assetDir: opt.pkgAsset,
        layoutType: opt.format,
        lang: lang,
        dir: p.join(context.root, 'theme'),
      ),
      Generator(
        book: book,
        directoryIndex: opt.directoryIndex,
      ),
    );
    output.generatePages(p.join(out, lang));
    final d = DateTime.now().millisecondsSinceEpoch - at;
    logger.i("book generation cost $d ms.");
  }

  final theme = ThemeManager.build(
    assetDir: opt.pkgAsset,
    layoutType: opt.format,
    lang: 'en',
    dir: p.join(context.root, 'theme'),
  );
  final gen = Generator(
    book: Book.empty('en'),
    directoryIndex: opt.directoryIndex,
  );
  final output = Output._(context, theme, gen);
  final langMgr = context.langManager;
  if (langMgr != null) {
    final content = gen.lingualPage(theme, context);
    File(p.join(out, 'index.html')).writeAsStringSync(content);
  }
  output.generateAssets(out);
  theme.copyAssets(p.join(out, 'dartbook'));
  return output;
}