/
hg.js
47 lines (39 loc) · 1.03 KB
/
hg.js
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
import findUp from 'find-up';
import execa from 'execa';
import { dirname } from 'path';
export const name = 'hg';
export const detect = directory => {
const hgDirectory = findUp.sync('.hg', {
cwd: directory,
type: 'directory',
});
if (hgDirectory) {
return dirname(hgDirectory);
}
};
const runHg = (directory, args) =>
execa.sync('hg', args, {
cwd: directory,
});
const getLines = execaResult => execaResult.stdout.split('\n');
export const getSinceRevision = (directory, { branch }) => {
const revision = runHg(directory, [
'debugancestor',
'tip',
branch || 'default',
]).stdout.trim();
return runHg(directory, ['id', '-i', '-r', revision]).stdout.trim();
};
export const getChangedFiles = (directory, revision) => {
return [
...getLines(
runHg(directory, ['status', '-n', '-a', '-m', '--rev', revision])
),
].filter(Boolean);
};
export const getUnstagedChangedFiles = () => {
return [];
};
export const stageFile = (directory, file) => {
runHg(directory, ['add', file]);
};