1 | var la = require('lazy-ass')
|
2 | var check = require('check-more-types')
|
3 | var log = require('debug')('ggit')
|
4 | var _ = require('lodash')
|
5 | var R = require('ramda')
|
6 |
|
7 | function parseLine (line) {
|
8 | var parts = line.trim().split(/\s+/)
|
9 | var diff = parts[0]
|
10 | if (diff === 'AM') {
|
11 | diff = 'A'
|
12 | }
|
13 | return {
|
14 | diff: diff,
|
15 | name: parts[1]
|
16 | }
|
17 | }
|
18 |
|
19 | function parseOutput (data) {
|
20 | data = data.trim()
|
21 |
|
22 | var lines = data.split('\n')
|
23 | var modifications = lines
|
24 | .filter(function (filename) {
|
25 | return filename.length
|
26 | })
|
27 | .map(parseLine)
|
28 |
|
29 | return modifications
|
30 | }
|
31 |
|
32 | function ensureUniq (list) {
|
33 | la(check.array(list), 'expected list', list)
|
34 | return _.uniq(list, 'name')
|
35 | }
|
36 |
|
37 | function groupByModification (parsedLines) {
|
38 | return _.groupBy(parsedLines, 'diff')
|
39 | }
|
40 |
|
41 | function logFoundFiles (files) {
|
42 | log('found changed files')
|
43 | log(files)
|
44 | }
|
45 |
|
46 | function logGroupedFiles (grouped) {
|
47 | log('grouped by modification')
|
48 | log(grouped)
|
49 | }
|
50 |
|
51 | var stdoutToGrouped = R.pipe(
|
52 | parseOutput,
|
53 | ensureUniq,
|
54 | R.tap(logFoundFiles),
|
55 | groupByModification,
|
56 | R.tap(logGroupedFiles)
|
57 | )
|
58 |
|
59 | module.exports = stdoutToGrouped
|