UNPKG

1.95 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _scms = require('./scms');
8
9var _scms2 = _interopRequireDefault(_scms);
10
11var _formatFiles = require('./formatFiles');
12
13var _formatFiles2 = _interopRequireDefault(_formatFiles);
14
15var _createIgnorer = require('./createIgnorer');
16
17var _createIgnorer2 = _interopRequireDefault(_createIgnorer);
18
19var _isSupportedExtension = require('./isSupportedExtension');
20
21var _isSupportedExtension2 = _interopRequireDefault(_isSupportedExtension);
22
23function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
24
25exports.default = (currentDirectory, {
26 config,
27 since,
28 staged,
29 restage = true,
30 branch,
31 onFoundSinceRevision,
32 onFoundChangedFiles,
33 onPartiallyStagedFile,
34 onWriteFile
35} = {}) => {
36 const scm = (0, _scms2.default)(currentDirectory);
37 if (!scm) {
38 throw new Error('Unable to detect a source control manager.');
39 }
40 const directory = scm.rootDirectory;
41
42 const revision = since || scm.getSinceRevision(directory, { staged, branch });
43
44 onFoundSinceRevision && onFoundSinceRevision(scm.name, revision);
45
46 const changedFiles = scm.getChangedFiles(directory, revision, staged).filter(_isSupportedExtension2.default).filter((0, _createIgnorer2.default)(directory));
47
48 const unstagedFiles = staged ? scm.getUnstagedChangedFiles(directory, revision).filter(_isSupportedExtension2.default).filter((0, _createIgnorer2.default)(directory)) : [];
49
50 const wasFullyStaged = f => unstagedFiles.indexOf(f) < 0;
51
52 onFoundChangedFiles && onFoundChangedFiles(changedFiles);
53
54 (0, _formatFiles2.default)(directory, changedFiles, {
55 config,
56 onWriteFile: file => {
57 onWriteFile && onWriteFile(file);
58 if (staged && restage) {
59 if (wasFullyStaged(file)) {
60 scm.stageFile(directory, file);
61 } else {
62 onPartiallyStagedFile && onPartiallyStagedFile(file);
63 }
64 }
65 }
66 });
67};
\No newline at end of file