release.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. const fs = require("fs");
  2. const util = require("util");
  3. const exec = util.promisify(require("child_process").exec);
  4. const updateChangelog = require("./updateChangelog");
  5. const excalidrawDir = `${__dirname}/../src/packages/excalidraw`;
  6. const excalidrawPackage = `${excalidrawDir}/package.json`;
  7. const originalReadMe = fs.readFileSync(`${excalidrawDir}/README.md`, "utf8");
  8. const updateReadme = () => {
  9. const excalidrawIndex = originalReadMe.indexOf("### Excalidraw");
  10. // remove note for stable readme
  11. const data = originalReadMe.slice(excalidrawIndex);
  12. // update readme
  13. fs.writeFileSync(`${excalidrawDir}/README.md`, data, "utf8");
  14. };
  15. const updatePackageVersion = (nextVersion) => {
  16. const pkg = require(excalidrawPackage);
  17. pkg.version = nextVersion;
  18. const content = `${JSON.stringify(pkg, null, 2)}\n`;
  19. fs.writeFileSync(excalidrawPackage, content, "utf-8");
  20. };
  21. const release = async (nextVersion) => {
  22. try {
  23. updateReadme();
  24. await updateChangelog(nextVersion);
  25. updatePackageVersion(nextVersion);
  26. await exec(`git add -u`);
  27. await exec(
  28. `git commit -m "docs: release @excalidraw/excalidraw@${nextVersion} 🎉"`,
  29. );
  30. // revert readme after release
  31. fs.writeFileSync(`${excalidrawDir}/README.md`, originalReadMe, "utf8");
  32. console.info("Done!");
  33. } catch (error) {
  34. console.error(error);
  35. process.exit(1);
  36. }
  37. };
  38. const nextVersion = process.argv.slice(2)[0];
  39. if (!nextVersion) {
  40. console.error("Pass the next version to release!");
  41. process.exit(1);
  42. }
  43. release(nextVersion);