node: working on start

This commit is contained in:
rkiel
2019-07-14 11:57:06 -04:00
parent fe909bf44f
commit a688e646d3
4 changed files with 56 additions and 6 deletions

View File

@@ -1,5 +1,8 @@
#!/usr/bin/env node #!/usr/bin/env node
const path = x => require("../" + x);
const immutable = path("js/immutable");
const commander = require("commander"); const commander = require("commander");
const program = new commander.Command(); const program = new commander.Command();
@@ -9,13 +12,14 @@ const exec = util.promisify(require("child_process").exec);
program.parse(process.argv); program.parse(process.argv);
function setCurrentBranch(dp) { function setCurrentBranch(dp) {
return exec(`git branch|grep '\*'|sed 's/\*\s*//'`) const cmd = "git rev-parse --abbrev-ref HEAD";
return exec(cmd)
.then(x => x.stdout.trim()) .then(x => x.stdout.trim())
.then(x => Object.assign({}, dp, { currentBranch: x })); .then(x => Object.assign({}, dp, { currentBranch: x }));
} }
function setStandardBranches(dp) { function setStandardBranches(dp) {
return Object.assign({}, dp, { standardBranches: ["master", "release"] }); return immutable.set(dp, "standardBranches", ["master", "release"]);
} }
function validateCurrentBranch(dp) { function validateCurrentBranch(dp) {
@@ -26,7 +30,7 @@ function validateCurrentBranch(dp) {
} }
} }
function validateFeatureBranch(dp) { function validateFeatureName(dp) {
if (dp.standardBranches.includes(dp.featureName)) { if (dp.standardBranches.includes(dp.featureName)) {
throw `invalid feature branch: ${dp.featureName}`; throw `invalid feature branch: ${dp.featureName}`;
} else { } else {
@@ -49,13 +53,40 @@ function setFeatureBranch(dp) {
return Object.assign({}, dp, { featureBranch: fb }); return Object.assign({}, dp, { featureBranch: fb });
} }
const x = Promise.resolve({ program }) function gitFetch(dp) {
const cmd = "git fetch origin -p && git fetch origin --tags";
console.log(cmd);
return exec(cmd).then(x => dp);
}
function setMergeBranch(dp) {
return immutable.set(
dp,
"mergeBranch",
["origin", dp.currentBranch].join("/")
);
}
function gitMerge(dp) {
const cmd = `git merge ${dp.mergeBranch}`;
console.log(cmd);
return exec(cmd).then(x => dp);
}
function toPromise(dp) {
return Promise.resolve(dp);
}
const x = toPromise({ program })
.then(setStandardBranches) .then(setStandardBranches)
.then(setFeatureName) .then(setFeatureName)
.then(validateFeatureName)
.then(setPrefix) .then(setPrefix)
.then(setCurrentBranch) .then(setCurrentBranch)
.then(validateCurrentBranch) .then(validateCurrentBranch)
.then(setFeatureBranch) .then(setFeatureBranch)
.then(validateFeatureBranch) .then(gitFetch)
.then(setMergeBranch)
.then(gitMerge)
.then(x => console.log("x", x)) .then(x => console.log("x", x))
.catch(err => console.error(err)); .catch(err => console.error(err));

13
js/immutable.js Normal file
View File

@@ -0,0 +1,13 @@
const _ = require("lodash");
let lib;
function set(dp, path, value) {
return _.assign({}, dp, _.set({}, path, value));
}
lib = {
set
};
module.exports = lib;

5
package-lock.json generated
View File

@@ -8,6 +8,11 @@
"version": "2.20.0", "version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
},
"lodash": {
"version": "4.17.14",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz",
"integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw=="
} }
} }
} }

View File

@@ -21,6 +21,7 @@
}, },
"homepage": "https://github.com/rkiel/git-utilities#readme", "homepage": "https://github.com/rkiel/git-utilities#readme",
"dependencies": { "dependencies": {
"commander": "^2.20.0" "commander": "^2.20.0",
"lodash": "^4.17.14"
} }
} }