UNPKG

jira-precommit-hook

Version:

Git commit hook to verify commit messages are tagged with a JIRA issue number

106 lines (80 loc) 3.01 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.readJSON = undefined; var _regenerator = require('babel-runtime/regenerator'); var _regenerator2 = _interopRequireDefault(_regenerator); var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator'); var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2); var _promise = require('babel-runtime/core-js/promise'); var _promise2 = _interopRequireDefault(_promise); var readJSON = exports.readJSON = function () { var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(filePath) { var content; return _regenerator2.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return _fsPromise2.default.readFile(filePath); case 2: content = _context.sent; return _context.abrupt('return', JSON.parse(content)); case 4: case 'end': return _context.stop(); } } }, _callee, this); })); return function readJSON(_x) { return _ref.apply(this, arguments); }; }(); exports.findParentFolder = findParentFolder; exports.verifyHooksFolder = verifyHooksFolder; exports.copyHookFiles = copyHookFiles; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _fsPromise = require('fs-promise'); var _fsPromise2 = _interopRequireDefault(_fsPromise); var _path = require('path'); var _path2 = _interopRequireDefault(_path); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function findParentFolder(startDir, parentDirName) { var currentDir = startDir; while (_fs2.default.existsSync(currentDir)) { if (_fs2.default.existsSync(_path2.default.join(currentDir, parentDirName))) { currentDir = _path2.default.join(currentDir, parentDirName); break; } else { var tempPath = currentDir; currentDir = _path2.default.normalize(_path2.default.join(currentDir, '/..')); if (currentDir === tempPath) { throw new Error('Cannot find ' + parentDirName); } } } return currentDir; } function verifyHooksFolder(desiredHooksPath) { if (!_fs2.default.existsSync(desiredHooksPath)) { console.log('Creating hooks directory in .git'); _fs2.default.mkdirSync(desiredHooksPath); } } function copyHookFiles(gitDirectory) { var source = _path2.default.join(__dirname, '../hooks/commit-msg'); var destination = _path2.default.join(gitDirectory, '/hooks/commit-msg'); var stat = _fs2.default.statSync(source); return new _promise2.default(function (fulfill, reject) { _fs2.default.createReadStream(source).pipe(_fs2.default.createWriteStream(destination, { mode: stat.mode })).on('close', function (error, result) { if (error) { reject(error); } else { fulfill(result); } }); }); }