generate static method
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;
}