git-files
Version:
49 lines (43 loc) • 1.99 kB
JavaScript
;
var chalk = require('chalk');
var utils = require('./utils');
var STAGED_COMMAND = 'git diff --cached --name-only';
var MODIFIED_COMMAND = 'git diff --name-status | awk \'{ if ($1 == "M") print $2 }\'';
var UNTRACKED_COMMAND = 'git ls-files --other --exclude-standard --full-name';
var DELETED_COMMAND = 'git ls-files --deleted --full-name';
function findFiles(pathType, listCommand) {
if (pathType === 'full') {
return utils.listFull(listCommand);
} else if (pathType === 'absolute') {
return utils.listAbsolute(listCommand);
} else if (pathType === 'relative') {
return utils.listRelative(listCommand);
} else {
throw new Error(error(pathType));
}
}
function error(pathType) {
return chalk.green('\'' + pathType + '\'') + ' is not a valid path type. Please specify ' + chalk.green('\'full\'') + ' (default), ' + chalk.green('\'relative\'') + ', or ' + chalk.green('\'absolute\'') + '.';
}
module.exports = {
staged: function staged() {
var pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'full';
return findFiles(pathType, STAGED_COMMAND);
},
deleted: function deleted() {
var pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'full';
return findFiles(pathType, DELETED_COMMAND);
},
modified: function modified() {
var pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'full';
return findFiles(pathType, MODIFIED_COMMAND);
},
untracked: function untracked() {
var pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'full';
return findFiles(pathType, UNTRACKED_COMMAND);
},
all: function all() {
var pathType = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'full';
return Array.from(new Set([].concat(findFiles(pathType, STAGED_COMMAND)).concat(findFiles(pathType, DELETED_COMMAND)).concat(findFiles(pathType, MODIFIED_COMMAND)).concat(findFiles(pathType, UNTRACKED_COMMAND))));
}
};