ggit
Version:
Local promise-returning git command wrappers
60 lines (49 loc) • 1.1 kB
JavaScript
var la = require('lazy-ass')
var check = require('check-more-types')
var log = require('debug')('ggit')
var _ = require('lodash')
var R = require('ramda')
function parseLine (line) {
var parts = line.trim().split(/\s+/)
var diff = parts[0]
if (diff === 'AM') {
diff = 'A'
}
return {
diff: diff,
name: parts[1]
}
}
function parseOutput (data) {
data = data.trim()
var lines = data.split('\n')
var modifications = lines
.filter(function (filename) {
return filename.length
})
.map(parseLine)
return modifications
}
function ensureUniq (list) {
la(check.array(list), 'expected list', list)
return _.uniqBy(list, 'name')
}
function groupByModification (parsedLines) {
return _.groupBy(parsedLines, 'diff')
}
function logFoundFiles (files) {
log('found changed files')
log(files)
}
function logGroupedFiles (grouped) {
log('grouped by modification')
log(grouped)
}
var stdoutToGrouped = R.pipe(
parseOutput,
ensureUniq,
R.tap(logFoundFiles),
groupByModification,
R.tap(logGroupedFiles)
)
module.exports = stdoutToGrouped