diff --git a/.gitgo b/.gitgo index 878d994..6ee8231 100644 --- a/.gitgo +++ b/.gitgo @@ -31,6 +31,7 @@ "cleanup": "fire", "wip": "construction" }, + "existing_branches": [], "current_branch": "", "current_emoji": "", "current_commit_message": "" 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..df8dca3 100644 --- a/lib/funcs/generate.js +++ b/lib/funcs/generate.js @@ -1,19 +1,14 @@ -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) => { + reader.jsonReader('./.gitgo', (err, conf) => { if (err) { console.log(err) return @@ -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 f500187..a148c79 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, null, 2), (err) => { if (err) console.log('Error writing file:', err) })