From 927f7405e9b52210894213e6b694f94da2a7afc5 Mon Sep 17 00:00:00 2001 From: Rachit Gupta Date: Tue, 24 Nov 2020 22:07:18 +0530 Subject: [PATCH 1/2] :bug: cli: Check if suggested branch name exists --- .gitgo | 65 +++++++++++++++++++----------------- .gitignore | 2 ++ lib/funcs/generate.js | 76 +++++++++++++------------------------------ lib/issue.js | 18 ++++++++-- 4 files changed, 75 insertions(+), 86 deletions(-) diff --git a/.gitgo b/.gitgo index 1f94730..543d42d 100644 --- a/.gitgo +++ b/.gitgo @@ -1,30 +1,37 @@ { - "current_issue": { - "number": "8", - "labels": ["enhancement", "test label"], - "title": "Add a feature to suggest commit messages" - }, - "commit_guidelines": ["fix:", "feat:", "docs:"], - "custom_guidelines": false, - "selected_commit_type": "", - "emojis": { - "initial_commit": "tada", - "feature": "sparkles", - "ui": "art", - "code_quality": "package", - "performance": "racehorse", - "security": "lock", - "config": "wrench", - "accessibility": "wheelchair", - "dev_tools": "rocket", - "docs": "pencil", - "release": "gem", - "bug_fix": "bug", - "crash": "boom", - "cleanup": "fire", - "wip": "construction" - }, - "current_branch": "", - "current_emoji": "", - "current_commit_message": "" -} + "current_issue": { + "number": "8", + "labels": [ + "enhancement", + "test label" + ], + "title": "Add a feature to suggest commit messages" + }, + "commit_guidelines": [ + "fix:", + "feat:", + "docs:" + ], + "custom_guidelines": false, + "selected_commit_type": "🎉 Initial commit", + "emojis": { + "initial_commit": "tada", + "feature": "sparkles", + "ui": "art", + "code_quality": "package", + "performance": "racehorse", + "security": "lock", + "config": "wrench", + "accessibility": "wheelchair", + "dev_tools": "rocket", + "docs": "pencil", + "release": "gem", + "bug_fix": "bug", + "crash": "boom", + "cleanup": "fire", + "wip": "construction" + }, + "existing_branches": [], + "current_emoji": "", + "current_commit_message": "" +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 8d056c8..78142cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .vscode/ node_modules/ +lib/dist +lib/funcs/dist/ diff --git a/lib/funcs/generate.js b/lib/funcs/generate.js index 09b40a8..1b6b980 100644 --- a/lib/funcs/generate.js +++ b/lib/funcs/generate.js @@ -1,17 +1,12 @@ -var issue_title; -var issue_labels = []; const reader = require('./jsonReader'); -const { createSentence } = require('sentence-engine'); +const cowsay = require('cowsay'); var retext = require('retext'); var pos = require('retext-pos'); var keywords = require('retext-keywords'); var toString = require('nlcst-to-string'); -var emoji = require('node-emoji'); var branch_names = []; -stopwords = ['a', 'the']; - function branchName() { reader.jsonReader('../../.gitgo', (err, conf) => { if (err) { @@ -25,74 +20,47 @@ function branchName() { .process(conf.current_issue.title, done) function done(err, file) { - if (err) throw err - + if (err) throw err; var keywords_list = [] file.data.keywords.forEach(function (keyword) { keywords_list.push(toString(keyword.matches[0].node)) }) - console.log() var key_phrases = [] file.data.keyphrases.forEach(function (phrase) { key_phrases.push(phrase.matches[0].nodes.map(stringify).join('')); function stringify(value) { return toString(value) - } + }; key_phrases.forEach(function (phrase) { phrase = phrase.split(" ").join("-").toLowerCase(); branch_names.push(phrase); - }) + }); + }) + + if (branch_names.length == 0) { + keyword_bn = keywords_list.join("-"); + branch_names.push(keyword_bn); + } - if (branch_names.length == 0) { - keyword_bn = keywords_list.join("-"); - branch_names.push(keyword_bn); + for (var item = 0; item < branch_names.length; item++) { + if (conf.existing_branches.includes(branch_names[item])) { + branch_names.pop(branch_names[item]) + } + } + if (branch_names.length === 0) { + console.log(cowsay.say({ + text: "Couldn't figure out a branch name for you :(", + T: 'U ' } + )) + } else { console.log("Suggested branch name") console.log(branch_names); - - }) + } } }); - -} - -function suggestCommitMsg() { - reader.jsonReader('../../.gitgo', (err, conf) => { - if (err) { - console.log(err) - return - } - - issue_labels = conf.current_issue.labels; - issue_title = conf.current_issue.title; - issue_title = remove_stopwords(issue_title); - const commitTemplate = '{emoticon} {label}: {commitMsg}'; - const vocabulary = { - emoticon: [`${emoji.get(':tada:')}`, `${emoji.get(':rocket:')}`, `${emoji.get(':sparkles:')}`], - label: issue_labels, - commitMsg: [issue_title] - }; - const anInstanceOfTheSentenceClass = createSentence(commitTemplate, vocabulary, { capitalize: true }); - console.log("Suggested commit message") - console.log(anInstanceOfTheSentenceClass.value); - }); -}; - -function remove_stopwords(str) { - res = [] - words = str.split(' ') - for (i = 0; i < words.length; i++) { - word_clean = words[i].split(".").join("") - if (!stopwords.includes(word_clean)) { - res.push(word_clean) - } - } - return (res.join(' ')) } branchName(); -suggestCommitMsg() -suggestCommitMsg() -suggestCommitMsg() diff --git a/lib/issue.js b/lib/issue.js index e34f1ef..34be65a 100644 --- a/lib/issue.js +++ b/lib/issue.js @@ -1,12 +1,15 @@ const axios = require('axios'); const gitRemoteOriginUrl = require('git-remote-origin-url'); -const reader = require('./funcs/jsonReader') +const reader = require('./funcs/jsonReader'); var emoji = require('node-emoji'); const chalk = require('chalk'); var titleOfIssue; let labelsOfIssue = []; const fs = require('fs'); +const { data } = require('retext'); var finalIssueNumber; +let existingBranches = []; +let range = n => Array.from(Array(n).keys()) module.exports = { getIssue: async (issueNumber) => { @@ -19,9 +22,17 @@ module.exports = { for (repo in response.data) { if (response.data[repo]['clone_url'] === (await gitRemoteOriginUrl())) { var issueLink = response.data[repo]['issues_url']; - finalIssueNumber = issueNumber.replace('#', '') + var branchLink = response.data[repo]['branches_url']; + finalBranchLink = branchLink.replace('{/branch}', ''); + finalIssueNumber = issueNumber.replace('#', ''); + axios.get(finalBranchLink).then(function (branchNamesRes) { + let branchData = branchNamesRes['data']; + for (i in range(branchData.length)) { + existingBranches.push(branchData[i]['name']) + } + }) finalIssueLink = issueLink. - replace('{/number}', `/${finalIssueNumber}`) + replace('{/number}', `/${finalIssueNumber}`); axios.get(finalIssueLink) .then(function (res) { titleOfIssue = res.data['title']; @@ -37,6 +48,7 @@ module.exports = { conf.current_issue.title = titleOfIssue; conf.current_issue.labels = labelsOfIssue; conf.current_issue.number = finalIssueNumber; + conf.existing_branches = existingBranches; fs.writeFile('./.gitgo', JSON.stringify(conf), (err) => { if (err) console.log('Error writing file:', err) }) From 1107930e2167555155d8898c4326975f87555c92 Mon Sep 17 00:00:00 2001 From: Yash Khare Date: Tue, 24 Nov 2020 22:58:23 +0530 Subject: [PATCH 2/2] :bug: fix: Fix path to gitgo in generate.js --- lib/funcs/generate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/funcs/generate.js b/lib/funcs/generate.js index 1b6b980..df8dca3 100644 --- a/lib/funcs/generate.js +++ b/lib/funcs/generate.js @@ -8,7 +8,7 @@ var toString = require('nlcst-to-string'); var branch_names = []; function branchName() { - reader.jsonReader('../../.gitgo', (err, conf) => { + reader.jsonReader('./.gitgo', (err, conf) => { if (err) { console.log(err) return