Resolves #381 -- better validation of args for git fakeTeamwork

This commit is contained in:
Peter Cottle 2016-07-06 21:18:13 -07:00
parent a90358ac1f
commit d302887fd1

View file

@ -26,6 +26,10 @@ var validateBranchName = function(engine, name) {
return engine.validateBranchName(name); return engine.validateBranchName(name);
}; };
var validateOriginBranchName = function(engine, name) {
return engine.origin.validateBranchName(name);
};
var validateBranchNameIfNeeded = function(engine, name) { var validateBranchNameIfNeeded = function(engine, name) {
if (engine.refs[name]) { if (engine.refs[name]) {
return name; return name;
@ -279,10 +283,39 @@ var commandConfig = {
} }
command.validateArgBounds(generalArgs, 0, 2); command.validateArgBounds(generalArgs, 0, 2);
// allow formats of: git Faketeamwork 2 or git Faketeamwork side 3 var branch;
var branch = (engine.origin.refs[generalArgs[0]]) ? var numToMake;
generalArgs[0] : 'master';
var numToMake = parseInt(generalArgs[0], 10) || generalArgs[1] || 1; // allow formats of: git fakeTeamwork 2 or git fakeTeamwork side 3
switch (generalArgs.length) {
// git fakeTeamwork
case 0:
branch = 'master';
numToMake = 1;
break;
// git fakeTeamwork 10 or git fakeTeamwork foo
case 1:
if (isNaN(parseInt(generalArgs[0], 10))) {
branch = validateOriginBranchName(engine, generalArgs[0]);
numToMake = 1;
} else {
numToMake = parseInt(generalArgs[0], 10);
branch = 'master';
}
break;
case 2:
branch = validateOriginBranchName(engine, generalArgs[0]);
if (isNaN(parseInt(generalArgs[1], 10))) {
throw new GitError({
msg: 'Bad numeric argument: ' + generalArgs[1]
});
}
numToMake = parseInt(generalArgs[1], 10);
break;
}
// make sure its a branch and exists // make sure its a branch and exists
var destBranch = engine.origin.resolveID(branch); var destBranch = engine.origin.resolveID(branch);
@ -291,7 +324,7 @@ var commandConfig = {
msg: intl.str('git-error-options') msg: intl.str('git-error-options')
}); });
} }
engine.fakeTeamwork(numToMake, branch); engine.fakeTeamwork(numToMake, branch);
} }
}, },
@ -583,7 +616,7 @@ var commandConfig = {
if (commandOptions['-i']) { if (commandOptions['-i']) {
var args = commandOptions['-i'].concat(generalArgs); var args = commandOptions['-i'].concat(generalArgs);
command.twoArgsImpliedHead(args, ' -i'); command.twoArgsImpliedHead(args, ' -i');
if (commandOptions['--interactive-test']) { if (commandOptions['--interactive-test']) {
engine.rebaseInteractiveTest( engine.rebaseInteractiveTest(
args[0], args[0],
@ -766,7 +799,7 @@ var commandConfig = {
engine.describe(generalArgs[0]); engine.describe(generalArgs[0]);
} }
}, },
tag: { tag: {
regex: /^git +tag($|\s)/, regex: /^git +tag($|\s)/,
execute: function(engine, command) { execute: function(engine, command) {
@ -776,7 +809,7 @@ var commandConfig = {
engine.printTags(tags); engine.printTags(tags);
return; return;
} }
command.twoArgsImpliedHead(generalArgs); command.twoArgsImpliedHead(generalArgs);
engine.tag(generalArgs[0], generalArgs[1]); engine.tag(generalArgs[0], generalArgs[1]);
} }