From f9cdace3760e7c1f9014d8481e31cc46516f42b7 Mon Sep 17 00:00:00 2001 From: Chris Vickery Date: Mon, 6 Nov 2017 15:39:41 -0800 Subject: [PATCH] Populate contribution choices with current values --- cli.js | 2 +- lib/contributors/index.js | 4 ++-- lib/contributors/prompt.js | 12 +++++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cli.js b/cli.js index 42451c1..7bcf1a0 100755 --- a/cli.js +++ b/cli.js @@ -56,7 +56,7 @@ function addContribution(argv) { var username = argv._[1]; var contributions = argv._[2]; // Add or update contributor in the config file - return updateContributors(argv, username, contributions) + return updateContributors(argv, username, contributions, argv.contributors) .then(data => { argv.contributors = data.contributors; return startGeneration(argv) diff --git a/lib/contributors/index.js b/lib/contributors/index.js index 2cb908d..af93b15 100644 --- a/lib/contributors/index.js +++ b/lib/contributors/index.js @@ -10,8 +10,8 @@ function isNewContributor(contributorList, username) { return !_.find({login: username}, contributorList); } -module.exports = function addContributor(options, username, contributions) { - const answersP = prompt(options, username, contributions); +module.exports = function addContributor(options, username, contributions, allContributions) { + const answersP = prompt(options, username, contributions, allContributions); const contributorsP = answersP .then(answers => add(options, answers.username, answers.contributions, github)); diff --git a/lib/contributors/prompt.js b/lib/contributors/prompt.js index 6da458c..d82c8b5 100644 --- a/lib/contributors/prompt.js +++ b/lib/contributors/prompt.js @@ -18,7 +18,7 @@ var contributionChoices = _.flow( }) ); -function getQuestions(options, username, contributions) { +function getQuestions(options, username, contributions, allContributions) { return [{ type: 'input', name: 'username', @@ -29,17 +29,23 @@ function getQuestions(options, username, contributions) { name: 'contributions', message: 'What are the contribution types?', when: !contributions, + default: function (answers) { + // default values for contributions when updating existing users + return allContributions + .filter((entry) => entry.login.toLowerCase() === answers.username.toLowerCase()) + .reduce((memo, entry) => memo.concat(entry.contributions), []); + }, choices: contributionChoices(options), validate: input => input.length ? true : 'Use space to select at least one contribution type.' }]; } -module.exports = function prompt(options, username, contributions) { +module.exports = function prompt(options, username, contributions, allContributions) { var defaults = { username: username, contributions: contributions && contributions.split(',') }; - var questions = getQuestions(options, username, contributions); + var questions = getQuestions(options, username, contributions, allContributions); return inquirer.prompt(questions) .then(_.assign(defaults)); };