delete-changelog.mjs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { execFile } from 'node:child_process';
  2. import fs from 'node:fs/promises';
  3. import path from 'node:path';
  4. import { fileURLToPath } from 'node:url';
  5. const __dirname = path.dirname(fileURLToPath(import.meta.url));
  6. const changelogPaths = [
  7. path.resolve(__dirname, '../CHANGELOG.md'),
  8. path.resolve(__dirname, '../packages/core/CHANGELOG.md'),
  9. path.resolve(__dirname, '../packages/utils/CHANGELOG.md'),
  10. path.resolve(__dirname, '../packages/validator-js/CHANGELOG.md'),
  11. ];
  12. await Promise.all(
  13. changelogPaths.map(async changelogPath => {
  14. if (await tryAccess(changelogPath)) {
  15. await fs.unlink(changelogPath);
  16. const { stderr, stdout } = await execFileAsync(`git`, ['add', changelogPath]);
  17. if (stdout) {
  18. console.info(`stdout: ${stdout}`);
  19. }
  20. if (stderr) {
  21. console.error(`stderr: ${stderr}`);
  22. }
  23. console.info(`Deleted ${changelogPath}`);
  24. }
  25. }),
  26. );
  27. async function tryAccess(filename) {
  28. try {
  29. await fs.access(filename);
  30. return true;
  31. } catch {
  32. return false;
  33. }
  34. }
  35. function execFileAsync(file, args) {
  36. return new Promise((resolve, reject) => {
  37. execFile(file, args, (error, stdout, stderr) => {
  38. if (error) {
  39. reject(error);
  40. }
  41. resolve({ stdout, stderr });
  42. });
  43. });
  44. }