All files / packages/design-system/scripts/release-notes hook.js

0% Statements 0/19
0% Branches 0/4
0% Functions 0/7
0% Lines 0/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49                                                                                                 
const git = require('simple-git');
const gitP = require('simple-git/promise');
const {
  logStatus,
  logWarning,
  RELEASE_NOTES_FILENAME
} = require('./helpers.js');
 
gitP()
  .status()
  .then(status => {
    const stagedReleaseNotes = status.staged.filter(
      file =>
        file !== RELEASE_NOTES_FILENAME && file.search('RELEASENOTES.') !== -1
    );
    const regEx = /^(.*ui\/(.*\.scss$|.*\.jsx))*$/;
    const needsReleaseNotes = status.staged.filter(
      file => file.search(regEx) !== -1
    );
    if (stagedReleaseNotes.length) {
      logStatus(
        `Compiling new ${RELEASE_NOTES_FILENAME} from ${
          stagedReleaseNotes.length
        } changed/added partial${
          stagedReleaseNotes.length > 1 ? 's' : ''
        } staged in commit`
      );
      return require('./index.js');
    } else if (needsReleaseNotes.length) {
      logWarning(`Did you forget to write release notes?`);
    } else {
      console.log('No RELEASENOTES committed');
    }
  })
  .then(() => {
    git().status((err, status) => {
      const modifiedReleaseNotesFile = status.modified.find(
        file => file === RELEASE_NOTES_FILENAME
      );
      if (modifiedReleaseNotesFile) {
        git().add(RELEASE_NOTES_FILENAME);
        logStatus(`${RELEASE_NOTES_FILENAME} added to the commit`);
      }
    });
  })
  .catch(error => {
    console.log(error);
  });