progress-text.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import {
  2. formatImportChaptersComplete,
  3. formatImportChaptersDiscovery,
  4. formatImportChaptersResume,
  5. formatWriteNextComplete,
  6. formatWriteNextProgress,
  7. formatWriteNextResultLines,
  8. type CliLanguage,
  9. } from "./localization.js";
  10. export { type CliLanguage };
  11. export function formatWriteStartLine(
  12. language: CliLanguage,
  13. current: number,
  14. total: number,
  15. bookId: string,
  16. ): string {
  17. return formatWriteNextProgress(language, current, total, bookId);
  18. }
  19. export function formatWriteCompletionLines(
  20. language: CliLanguage,
  21. result: {
  22. readonly chapterNumber: number;
  23. readonly title: string;
  24. readonly wordCount: number;
  25. readonly passedAudit: boolean;
  26. readonly revised: boolean;
  27. readonly status: string;
  28. readonly issues: ReadonlyArray<{
  29. readonly severity: string;
  30. readonly category: string;
  31. readonly description: string;
  32. }>;
  33. },
  34. ): string[] {
  35. return [...formatWriteNextResultLines(language, result), ""];
  36. }
  37. export function formatWriteDoneLine(language: CliLanguage): string {
  38. return formatWriteNextComplete(language);
  39. }
  40. export function formatImportDiscoveryLine(
  41. language: CliLanguage,
  42. chapterCount: number,
  43. bookId: string,
  44. ): string {
  45. return formatImportChaptersDiscovery(language, chapterCount, bookId);
  46. }
  47. export function formatImportResumeLine(
  48. language: CliLanguage,
  49. resumeFrom: number,
  50. ): string {
  51. return formatImportChaptersResume(language, resumeFrom);
  52. }
  53. export function formatImportCompletionLines(
  54. language: CliLanguage,
  55. result: {
  56. readonly importedCount: number;
  57. readonly totalCountLabel: string;
  58. readonly nextChapter: number;
  59. readonly bookId: string;
  60. },
  61. ): string[] {
  62. return [
  63. language === "en" ? "Import complete:" : "导入完成:",
  64. language === "en"
  65. ? ` Chapters imported: ${result.importedCount}`
  66. : ` 已导入章节:${result.importedCount}`,
  67. language === "en"
  68. ? ` Total length: ${result.totalCountLabel}`
  69. : ` 总长度:${result.totalCountLabel}`,
  70. language === "en"
  71. ? ` Next chapter number: ${result.nextChapter}`
  72. : ` 下一章编号:${result.nextChapter}`,
  73. "",
  74. language === "en"
  75. ? `Run "inkos write next ${result.bookId}" to continue writing.`
  76. : `运行 "inkos write next ${result.bookId}" 继续写作。`,
  77. ];
  78. }