export.js 883 B

1234567891011121314151617181920212223
  1. import { exportChapters } from '../export/index.js'
  2. /**
  3. * export <章号> | export --range=a-b | export --all
  4. * 干净导出:去 front matter 纯正文 → 工作区/导出/(spec §4.7)。
  5. */
  6. export async function run(args, options, ctx) {
  7. if (options.all) {
  8. return exportChapters(ctx, { mode: 'all' })
  9. }
  10. if (options.range) {
  11. const m = String(options.range).match(/^(\d+)-(\d+)$/)
  12. if (!m) {
  13. return { ok: false, error: '范围格式应为 --range=起章-止章,例如 --range=6-12。' }
  14. }
  15. return exportChapters(ctx, { mode: 'range', start: Number(m[1]), end: Number(m[2]) })
  16. }
  17. const chapterNum = parseInt(args[0], 10)
  18. if (Number.isNaN(chapterNum)) {
  19. return { ok: false, error: '用法:export <章号>,或 export --range=起章-止章,或 export --all。' }
  20. }
  21. return exportChapters(ctx, { mode: 'single', chapterNum })
  22. }