updatelog.mjs 938 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import fs from "fs-extra";
  2. import path from "path";
  3. const UPDATE_LOG = "UPDATELOG.md";
  4. // parse the UPDATELOG.md
  5. export async function resolveUpdateLog(tag) {
  6. const cwd = process.cwd();
  7. const reTitle = /^## v[\d\.]+/;
  8. const reEnd = /^---/;
  9. const file = path.join(cwd, UPDATE_LOG);
  10. if (!(await fs.pathExists(file))) {
  11. throw new Error("could not found UPDATELOG.md");
  12. }
  13. const data = await fs.readFile(file).then((d) => d.toString("utf8"));
  14. const map = {};
  15. let p = "";
  16. data.split("\n").forEach((line) => {
  17. if (reTitle.test(line)) {
  18. p = line.slice(3).trim();
  19. if (!map[p]) {
  20. map[p] = [];
  21. } else {
  22. throw new Error(`Tag ${p} dup`);
  23. }
  24. } else if (reEnd.test(line)) {
  25. p = "";
  26. } else if (p) {
  27. map[p].push(line);
  28. }
  29. });
  30. if (!map[tag]) {
  31. throw new Error(`could not found "${tag}" in UPDATELOG.md`);
  32. }
  33. return map[tag].join("\n").trim();
  34. }