-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
67 lines (52 loc) · 1.24 KB
/
index.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
'use strict';
var gitSpawnedStream = require('git-spawned-stream');
var streamingParser = require('./lib/parser');
function blame(repoPath, opts, gitCommand = 'git') {
var rev = typeof opts.rev !== 'undefined' ? opts.rev : 'HEAD';
var args = [];
if (typeof opts.workTree === 'string') {
args.push('--work-tree=' + opts.workTree);
}
args.push('blame');
if (rev) {
args.push(rev);
}
if (opts.ignoreWhitespaces) {
args.push('-w');
}
if (opts.limitLines) {
args.push('-L ' + opts.limitLines);
}
if (opts.detectMoved) {
if (typeof opts.detectMoved === 'number') {
args.push('-M' + opts.detectMoved);
} else {
args.push('-M');
}
}
if (opts.detectCopy) {
switch (opts.detectCopyMode) {
case 'any':
args.push('-C -C');
break;
case 'created':
args.push('-C');
break;
case 'default':
default:
// Placeholder
break;
}
if (typeof opts.detectCopy === 'number') {
args.push('-C' + opts.detectCopy);
} else {
args.push('-C');
}
}
args.push('-p');
args.push('--');
args.push(opts.file);
// TODO: implement limit
return streamingParser(gitSpawnedStream(repoPath, args, gitCommand));
}
module.exports = blame;