simple-git
Version:
Simple GIT interface for node.js
55 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
const parse_remote_messages_1 = require("./parse-remote-messages");
function pushResultPushedItem(local, remote, status) {
const deleted = status.includes('deleted');
const tag = status.includes('tag') || /^refs\/tags/.test(local);
const alreadyUpdated = !status.includes('new');
return {
deleted,
tag,
branch: !tag,
new: !alreadyUpdated,
alreadyUpdated,
local,
remote,
};
}
const parsers = [
new utils_1.LineParser(/^Pushing to (.+)$/, (result, [repo]) => {
result.repo = repo;
}),
new utils_1.LineParser(/^updating local tracking ref '(.+)'/, (result, [local]) => {
result.ref = Object.assign(Object.assign({}, (result.ref || {})), { local });
}),
new utils_1.LineParser(/^[*-=]\s+([^:]+):(\S+)\s+\[(.+)]$/, (result, [local, remote, type]) => {
result.pushed.push(pushResultPushedItem(local, remote, type));
}),
new utils_1.LineParser(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/, (result, [local, remote, remoteName]) => {
result.branch = Object.assign(Object.assign({}, (result.branch || {})), { local,
remote,
remoteName });
}),
new utils_1.LineParser(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/, (result, [local, remote, from, to]) => {
result.update = {
head: {
local,
remote,
},
hash: {
from,
to,
},
};
}),
];
exports.parsePushResult = (stdOut, stdErr) => {
const pushDetail = exports.parsePushDetail(stdOut, stdErr);
const responseDetail = parse_remote_messages_1.parseRemoteMessages(stdOut, stdErr);
return Object.assign(Object.assign({}, pushDetail), responseDetail);
};
exports.parsePushDetail = (stdOut, stdErr) => {
return utils_1.parseStringResponse({ pushed: [] }, parsers, `${stdOut}\n${stdErr}`);
};
//# sourceMappingURL=parse-push.js.map