UNPKG

2.73 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _scms = _interopRequireDefault(require("./scms"));
9
10var _processFiles = _interopRequireDefault(require("./processFiles"));
11
12var _createIgnorer = _interopRequireDefault(require("./createIgnorer"));
13
14var _createMatcher = _interopRequireDefault(require("./createMatcher"));
15
16var _isSupportedExtension = _interopRequireDefault(require("./isSupportedExtension"));
17
18function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
20var _default = (currentDirectory, {
21 config,
22 since,
23 staged,
24 pattern,
25 restage = true,
26 branch,
27 bail,
28 check,
29 verbose,
30 onFoundSinceRevision,
31 onFoundChangedFiles,
32 onPartiallyStagedFile,
33 onExamineFile,
34 onCheckFile,
35 onWriteFile
36} = {}) => {
37 const scm = (0, _scms.default)(currentDirectory);
38
39 if (!scm) {
40 throw new Error('Unable to detect a source control manager.');
41 }
42
43 const directory = scm.rootDirectory;
44 const revision = since || scm.getSinceRevision(directory, {
45 staged,
46 branch
47 });
48 onFoundSinceRevision && onFoundSinceRevision(scm.name, revision);
49 const rootIgnorer = (0, _createIgnorer.default)(directory);
50 const cwdIgnorer = currentDirectory !== directory ? (0, _createIgnorer.default)(currentDirectory) : () => true;
51 const changedFiles = scm.getChangedFiles(directory, revision, staged).filter(_isSupportedExtension.default).filter((0, _createMatcher.default)(pattern)).filter(rootIgnorer).filter(cwdIgnorer);
52 const unstagedFiles = staged ? scm.getUnstagedChangedFiles(directory, revision).filter(_isSupportedExtension.default).filter((0, _createMatcher.default)(pattern)).filter(rootIgnorer).filter(cwdIgnorer) : [];
53
54 const wasFullyStaged = f => unstagedFiles.indexOf(f) < 0;
55
56 onFoundChangedFiles && onFoundChangedFiles(changedFiles);
57 const failReasons = new Set();
58 (0, _processFiles.default)(directory, changedFiles, {
59 check,
60 config,
61 onWriteFile: file => {
62 onWriteFile && onWriteFile(file);
63
64 if (bail) {
65 failReasons.add('BAIL_ON_WRITE');
66 }
67
68 if (staged && restage) {
69 if (wasFullyStaged(file)) {
70 scm.stageFile(directory, file);
71 } else {
72 onPartiallyStagedFile && onPartiallyStagedFile(file);
73 failReasons.add('PARTIALLY_STAGED_FILE');
74 }
75 }
76 },
77 onCheckFile: (file, isFormatted) => {
78 onCheckFile && onCheckFile(file, isFormatted);
79
80 if (!isFormatted) {
81 failReasons.add('CHECK_FAILED');
82 }
83 },
84 onExamineFile: verbose && onExamineFile
85 });
86 return {
87 success: failReasons.size === 0,
88 errors: Array.from(failReasons)
89 };
90};
91
92exports.default = _default;
\No newline at end of file