all-contributors-cli
Advanced tools
Comparing version 6.20.0 to 6.26.1
@@ -7,12 +7,9 @@ "use strict"; | ||
// These Node API's are intended to be network and side effect free, everything should be in memory with no io to network/disk | ||
var chalk = require('chalk'); | ||
var addContributorWithDetails = require('./contributors/addWithDetails'); | ||
var generate = require('./generate'); | ||
var _require = require('./init/init-content'), | ||
addContributorsList = _require.addContributorsList, | ||
addBadge = _require.addBadge; | ||
addContributorsList = _require.addContributorsList, | ||
addBadge = _require.addBadge; | ||
process.stdout.write(chalk.yellow(`${chalk.bold('WARNING')} :: Using the all-contributors node-api comes with zero guarantees of stability and may contain breaking changes without warning\n`)); | ||
@@ -19,0 +16,0 @@ module.exports = { |
#!/usr/bin/env node | ||
/* eslint-disable no-console */ | ||
@@ -7,22 +6,13 @@ "use strict"; | ||
var path = require('path'); | ||
var yargs = require('yargs'); | ||
var chalk = require('chalk'); | ||
var inquirer = require('inquirer'); | ||
var init = require('./init'); | ||
var generate = require('./generate'); | ||
var util = require('./util'); | ||
var repo = require('./repo'); | ||
var updateContributors = require('./contributors'); | ||
var cwd = process.cwd(); | ||
var defaultRCFile = path.join(cwd, '.all-contributorsrc'); | ||
var yargv = yargs.help('help').alias('h', 'help').alias('v', 'version').version().recommendCommands().command('generate', 'Generate the list of contributors').usage('Usage: $0 generate').command('add', 'add a new contributor').usage('Usage: $0 add <username> <contribution>').command('init', 'Prepare the project to be used with this tool').usage('Usage: $0 init').command('check', 'Compares contributors from the repository with the ones credited in .all-contributorsrc').usage('Usage: $0 check').boolean('commit').default('files', ['README.md']).default('contributorsPerLine', 7).option('contributorsSortAlphabetically', { | ||
var yargv = yargs.scriptName('all-contributors').help('help').alias('h', 'help').alias('v', 'version').version().recommendCommands().command('generate', `Generate the list of contributors\n\nUSAGE: all-contributors generate`).command('add', `Add a new contributor\n\nUSAGE: all-contributors add <username> <comma-separated contributions>`).command('init', `Prepare the project to be used with this tool\n\nUSAGE: all-contributors init`).command('check', `Compare contributors from the repository with the ones credited in .all-contributorsrc'\n\nUSAGE: all-contributors check`).boolean('commit').default('files', ['README.md']).default('contributorsPerLine', 7).option('contributorsSortAlphabetically', { | ||
type: 'boolean', | ||
@@ -40,3 +30,2 @@ default: false, | ||
}).argv; | ||
function startGeneration(argv) { | ||
@@ -51,9 +40,7 @@ return Promise.all(argv.files.map(function (file) { | ||
} | ||
function addContribution(argv) { | ||
util.configFile.readConfig(argv.config); // ensure the config file exists | ||
var username = argv._[1] === undefined ? undefined : String(argv._[1]); | ||
var contributions = argv._[2]; // Add or update contributor in the config file | ||
var contributions = argv._[2]; | ||
// Add or update contributor in the config file | ||
return updateContributors(argv, username, contributions).then(function (data) { | ||
@@ -68,3 +55,2 @@ argv.contributors = data.contributors; | ||
} | ||
function checkContributors(argv) { | ||
@@ -87,3 +73,2 @@ var configData = util.configFile.readConfig(argv.config); | ||
}); | ||
if (missingInConfig.length) { | ||
@@ -93,3 +78,2 @@ process.stdout.write(chalk.bold('Missing contributors in .all-contributorsrc:\n')); | ||
} | ||
if (missingFromRepo.length) { | ||
@@ -101,12 +85,9 @@ process.stdout.write(chalk.bold('Unknown contributors found in .all-contributorsrc:\n')); | ||
} | ||
function onError(error) { | ||
if (error) { | ||
console.error(error.message); | ||
console.error(error.stack || error.message || error); | ||
process.exit(1); | ||
} | ||
process.exit(0); | ||
} | ||
function promptForCommand(argv) { | ||
@@ -134,3 +115,2 @@ var questions = [{ | ||
} | ||
promptForCommand(yargv).then(function (command) { | ||
@@ -140,12 +120,8 @@ switch (command) { | ||
return init(); | ||
case 'generate': | ||
return startGeneration(yargv); | ||
case 'add': | ||
return addContribution(yargv); | ||
case 'check': | ||
return checkContributors(yargv); | ||
default: | ||
@@ -152,0 +128,0 @@ throw new Error(`Unknown command ${command}`); |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
function uniqueTypes(contribution) { | ||
return contribution.type || contribution; | ||
} | ||
function formatContributions(options, existing, types) { | ||
@@ -13,7 +11,4 @@ if (existing === void 0) { | ||
} | ||
var same = _.intersectionBy(uniqueTypes, existing, types); | ||
var remove = types.length < existing.length && same.length; | ||
if (options.url) { | ||
@@ -27,10 +22,7 @@ return existing.concat(types.map(function (type) { | ||
} | ||
if (remove) { | ||
return same; | ||
} | ||
return _.uniqBy(uniqueTypes, existing.concat(types)); | ||
} | ||
function updateContributor(options, contributor, contributions) { | ||
@@ -41,3 +33,2 @@ return _.assign(contributor, { | ||
} | ||
function updateExistingContributor(options, username, contributions) { | ||
@@ -48,7 +39,5 @@ return options.contributors.map(function (contributor) { | ||
} | ||
return updateContributor(options, contributor, contributions); | ||
}); | ||
} | ||
function addNewContributor(options, username, contributions, infoFetcher) { | ||
@@ -59,7 +48,5 @@ return infoFetcher(username, options.repoType, options.repoHost).then(function (userData) { | ||
}); | ||
return options.contributors.concat(contributor); | ||
}); | ||
} | ||
module.exports = function (options, username, contributions, infoFetcher) { | ||
@@ -70,8 +57,6 @@ // case insensitive find | ||
}, options.contributors); | ||
if (exists) { | ||
return Promise.resolve(updateExistingContributor(options, username, contributions)); | ||
} | ||
return addNewContributor(options, username, contributions, infoFetcher); | ||
}; |
"use strict"; | ||
var addContributor = require('./add'); // Adds a contributor without going to the network (you supply the additional fields) | ||
var addContributor = require('./add'); | ||
// Adds a contributor without going to the network (you supply the additional fields) | ||
module.exports = function (_ref) { | ||
var options = _ref.options, | ||
login = _ref.login, | ||
contributions = _ref.contributions, | ||
name = _ref.name, | ||
avatar_url = _ref.avatar_url, | ||
profile = _ref.profile; | ||
login = _ref.login, | ||
contributions = _ref.contributions, | ||
name = _ref.name, | ||
avatar_url = _ref.avatar_url, | ||
profile = _ref.profile; | ||
return addContributor(options, login, contributions, function infoFetcherNoNetwork() { | ||
@@ -14,0 +14,0 @@ return Promise.resolve({ |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var util = require('../util'); | ||
var repo = require('../repo'); | ||
var add = require('./add'); | ||
var prompt = require('./prompt'); | ||
function isNewContributor(contributorList, username) { | ||
@@ -18,3 +13,2 @@ return !_.find({ | ||
} | ||
module.exports = function (options, username, contributions) { | ||
@@ -21,0 +15,0 @@ var answersP = prompt(options, username, contributions); |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var inquirer = require('inquirer'); | ||
var util = require('../util'); | ||
var repo = require('../repo'); | ||
var contributionChoices = _.flow(util.contributionTypes, _.toPairs, _.sortBy(function (pair) { | ||
@@ -19,3 +15,2 @@ return pair[1].description; | ||
})); | ||
function getQuestions(options, username, contributions) { | ||
@@ -31,3 +26,2 @@ return [{ | ||
} | ||
return true; | ||
@@ -57,3 +51,2 @@ } | ||
}, []); | ||
if (!input.length) { | ||
@@ -64,3 +57,2 @@ return 'Use space to select at least one contribution type.'; | ||
} | ||
return true; | ||
@@ -70,22 +62,16 @@ } | ||
} | ||
function getValidUserContributions(options, contributions) { | ||
var validContributionTypes = util.contributionTypes(options); | ||
var userContributions = contributions && contributions.split(','); | ||
var validUserContributions = _.filter(function (userContribution) { | ||
return validContributionTypes[userContribution] !== undefined; | ||
})(userContributions); | ||
var invalidUserContributions = _.filter(function (userContribution) { | ||
return validContributionTypes[userContribution] === undefined; | ||
})(userContributions); | ||
if (_.isEmpty(validUserContributions)) { | ||
throw new Error(`${invalidUserContributions.toString()} is/are invalid contribution type(s)`); | ||
} | ||
return validUserContributions; | ||
} | ||
module.exports = function (options, username, contributions) { | ||
@@ -92,0 +78,0 @@ var defaults = { |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var defaultTemplate = '[![All Contributors](https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg?style=flat-square)](#contributors-)'; | ||
module.exports = function (options, contributors) { | ||
@@ -8,0 +6,0 @@ return _.template(options.badgeTemplate || defaultTemplate)({ |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var util = require('../util'); | ||
var linkTemplate = _.template('<a href="<%= url %>" title="<%= description %>"><%= symbol %></a>'); | ||
function getType(options, contribution) { | ||
@@ -13,10 +10,7 @@ var types = util.contributionTypes(options); | ||
} | ||
module.exports = function (options, contributor, contribution) { | ||
var type = getType(options, contribution); | ||
if (!type) { | ||
throw new Error(`Unknown contribution type ${contribution} for contributor ${contributor.login || contributor.name}`); | ||
} | ||
var templateData = { | ||
@@ -29,3 +23,2 @@ symbol: type.symbol, | ||
var url = getUrl(contribution, contributor); | ||
if (contribution.url) { | ||
@@ -36,3 +29,2 @@ url = contribution.url; | ||
} | ||
return linkTemplate(_.assign({ | ||
@@ -42,3 +34,2 @@ url | ||
}; | ||
function getUrl(contribution, contributor) { | ||
@@ -45,0 +36,0 @@ if (contributor.login) { |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var formatContributionType = require('./format-contribution-type'); | ||
var avatarTemplate = _.template('<img src="<%= contributor.avatar_url %>?s=<%= options.imageSize %>" width="<%= options.imageSize %>px;" alt=""/>'); | ||
var avatarTemplate = _.template('<img src="<%= contributor.avatar_url %>?s=<%= options.imageSize %>" width="<%= options.imageSize %>px;" alt="<%= name %>"/>'); | ||
var avatarBlockTemplate = _.template('<a href="<%= contributor.profile %>"><%= avatar %><br /><sub><b><%= name %></b></sub></a>'); | ||
var avatarBlockTemplateNoProfile = _.template('<%= avatar %><br /><sub><b><%= name %></b></sub>'); | ||
var contributorTemplate = _.template('<%= avatarBlock %><br /><%= contributions %>'); | ||
var defaultImageSize = 100; | ||
function defaultTemplate(templateData) { | ||
var name = escapeName(templateData.contributor.name); | ||
var rawName = templateData.contributor.name || templateData.contributor.login; | ||
var name = escapeName(rawName); | ||
var avatar = avatarTemplate(_.assign(templateData, { | ||
name | ||
})); | ||
var avatarBlockTemplateData = _.assign({ | ||
@@ -27,5 +20,3 @@ name, | ||
}, templateData); | ||
var avatarBlock = null; | ||
if (templateData.contributor.profile) { | ||
@@ -36,3 +27,2 @@ avatarBlock = avatarBlockTemplate(avatarBlockTemplateData); | ||
} | ||
return contributorTemplate(_.assign({ | ||
@@ -42,10 +32,7 @@ avatarBlock | ||
} | ||
function escapeName(name) { | ||
return name.replace(new RegExp('\\|', 'g'), '|'); | ||
return name.replace(new RegExp('\\|', 'g'), '|').replace(new RegExp('\\"', 'g'), '"'); | ||
} | ||
module.exports = function (options, contributor) { | ||
var formatter = _.partial(formatContributionType, [options, contributor]); | ||
var contributions = contributor.contributions.map(formatter).join(' '); | ||
@@ -59,6 +46,4 @@ var templateData = { | ||
}; | ||
var customTemplate = options.contributorTemplate && _.template(options.contributorTemplate); | ||
return (customTemplate || defaultTemplate)(templateData); | ||
}; |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var floor = require('lodash/floor'); | ||
var formatBadge = require('./format-badge'); | ||
var formatContributor = require('./format-contributor'); | ||
function injectListBetweenTags(newContent) { | ||
@@ -16,16 +14,27 @@ return function (previousContent) { | ||
var startOfClosingTagIndex = previousContent.indexOf(`${tagToLookFor}END`, endOfOpeningTagIndex); | ||
if (startOfOpeningTagIndex === -1 || endOfOpeningTagIndex === -1 || startOfClosingTagIndex === -1) { | ||
return previousContent; | ||
} | ||
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n<!-- prettier-ignore-start -->', '\n<!-- markdownlint-disable -->', newContent, '<!-- markdownlint-restore -->', '\n<!-- prettier-ignore-end -->', '\n\n', previousContent.slice(startOfClosingTagIndex)].join(''); | ||
var startIndent = Math.max(0, previousContent.lastIndexOf('\n', startOfOpeningTagIndex)); | ||
var nbSpaces = startOfOpeningTagIndex - Math.min(startOfOpeningTagIndex, startIndent); | ||
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n<!-- prettier-ignore-start -->', '\n<!-- markdownlint-disable -->', newContent.replace('\n', `\n${' '.repeat(nbSpaces - 1)}`), '<!-- markdownlint-restore -->', '\n<!-- prettier-ignore-end -->', '\n\n', previousContent.slice(startOfClosingTagIndex)].join(''); | ||
}; | ||
} | ||
function formatLine(contributors) { | ||
return `<td align="center">${contributors.join('</td>\n <td align="center">')}</td>`; | ||
function formatLine(options, contributors) { | ||
var width = floor(_.divide(100)(options.contributorsPerLine), 2); | ||
var attributes = `align="center" valign="top" width="${width}%"`; | ||
return `<td ${attributes}>${contributors.join(`</td>\n <td ${attributes}>`)}</td>`; | ||
} | ||
function formatFooter(options) { | ||
if (!options.linkToUsage) { | ||
return ''; | ||
} | ||
return `<tr>\n <td align="center" size="13px" colspan="${options.contributorsPerLine}">\n <img src="${'https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg'}">\n <a href="${'https://all-contributors.js.org/docs/en/bot/usage'}">Add your contributions</a>\n </img>\n </td>\n </tr>`; | ||
} | ||
function generateContributorsList(options, contributors) { | ||
var tableFooter = formatFooter(options); | ||
var defaultWrapperTemplate = _.template('\n<table>\n <tbody><%= bodyContent %> </tbody>\n<%= tableFooterContent %></table>\n\n'); | ||
var wrapperTemplate = options.wrapperTemplate ? _.template(`\n${options.wrapperTemplate}\n\n`) : defaultWrapperTemplate; | ||
var seperator = options.wrapperTemplate ? '\n </tr><br />\n <tr>\n ' : '\n </tr>\n <tr>\n '; | ||
var tableFooterContent = ''; | ||
return _.flow(_.sortBy(function (contributor) { | ||
@@ -37,7 +46,14 @@ if (options.contributorsSortAlphabetically) { | ||
return formatContributor(options, contributor); | ||
}), _.chunk(options.contributorsPerLine), _.map(formatLine), _.join('\n </tr>\n <tr>\n '), function (newContent) { | ||
return `\n<table>\n <tr>\n ${newContent}\n </tr>\n</table>\n\n`; | ||
}), _.chunk(options.contributorsPerLine), _.map(function (currentLineContributors) { | ||
return formatLine(options, currentLineContributors); | ||
}), _.join(seperator), function (newContent) { | ||
if (options.linkToUsage) { | ||
tableFooterContent = ` <tfoot>\n ${tableFooter}\n </tfoot>\n`; | ||
} | ||
return wrapperTemplate({ | ||
bodyContent: `\n <tr>\n ${newContent}\n </tr>\n`, | ||
tableFooterContent | ||
}); | ||
})(contributors); | ||
} | ||
function replaceBadge(newContent) { | ||
@@ -50,11 +66,10 @@ return function (previousContent) { | ||
var startOfClosingTagIndex = previousContent.indexOf(`${tagToLookFor}END`, endOfOpeningTagIndex); | ||
if (startOfOpeningTagIndex === -1 || endOfOpeningTagIndex === -1 || startOfClosingTagIndex === -1) { | ||
return previousContent; | ||
} | ||
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n', newContent, '\n', previousContent.slice(startOfClosingTagIndex)].join(''); | ||
var startIndent = Math.max(0, previousContent.lastIndexOf('\n', startOfOpeningTagIndex)); | ||
var nbSpaces = startOfOpeningTagIndex - Math.min(startOfOpeningTagIndex, startIndent); | ||
return [previousContent.slice(0, endOfOpeningTagIndex + closingTag.length), '\n', newContent.replace('\n', `\n${' '.repeat(nbSpaces)}`), '\n', previousContent.slice(startOfClosingTagIndex)].join(''); | ||
}; | ||
} | ||
module.exports = function (options, contributors, fileContent) { | ||
@@ -61,0 +76,0 @@ var contributorsList = contributors.length === 0 ? '\n' : generateContributorsList(options, contributors); |
@@ -8,3 +8,2 @@ "use strict"; | ||
lowercase: true, | ||
transform(msg) { | ||
@@ -15,7 +14,5 @@ return msg.replace(/(^.*?) ([A-Z][a-z]+) \w*/, function () { | ||
} | ||
return `${words[0]} ${words[1].toLowerCase()} `; | ||
}); | ||
} | ||
}, | ||
@@ -22,0 +19,0 @@ atom: { |
"use strict"; | ||
var fs = require('fs'); | ||
module.exports = function (file) { | ||
@@ -6,0 +5,0 @@ return new Promise(function (resolve, reject) { |
"use strict"; | ||
var util = require('../util'); | ||
var prompt = require('./prompt'); | ||
var initContent = require('./init-content'); | ||
var ensureFileExists = require('./file-exist'); | ||
var configFile = util.configFile; | ||
var markdown = util.markdown; | ||
function injectInFile(file, fn) { | ||
@@ -19,3 +14,2 @@ return markdown.read(file).then(function (content) { | ||
} | ||
module.exports = function () { | ||
@@ -22,0 +16,0 @@ return prompt().then(function (result) { |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var injectContentBetween = require('../util').markdown.injectContentBetween; | ||
var badgeContent = ['<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->', '[![All Contributors](https://img.shields.io/badge/all_contributors-0-orange.svg?style=flat-square)](#contributors-)', '<!-- ALL-CONTRIBUTORS-BADGE:END -->'].join('\n'); | ||
@@ -11,25 +9,18 @@ var headerContent = 'Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):'; | ||
var footerContent = 'This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!'; | ||
function addBadge(lines) { | ||
return injectContentBetween(lines, badgeContent, 1, 1); | ||
} | ||
function splitAndRejoin(fn) { | ||
return _.flow(_.split('\n'), fn, _.join('\n')); | ||
} | ||
var findContributorsSection = _.findIndex(function (str) { | ||
return str.toLowerCase().indexOf('# contributors') === 1; | ||
}); | ||
function addContributorsList(lines) { | ||
var insertionLine = findContributorsSection(lines); | ||
if (insertionLine === -1) { | ||
return lines.concat(['## Contributors ✨', '', headerContent, '', listContent, '', footerContent]); | ||
} | ||
return injectContentBetween(lines, listContent, insertionLine + 3, insertionLine + 3); | ||
} | ||
module.exports = { | ||
@@ -36,0 +27,0 @@ addBadge: splitAndRejoin(addBadge), |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var inquirer = require('inquirer'); | ||
var git = require('../util').git; | ||
var conventions = require('./commit-conventions'); | ||
var questions = [{ | ||
@@ -77,7 +73,10 @@ type: 'input', | ||
choices: Object.values(conventions), | ||
default: 'none' | ||
default: 'angular' | ||
}, { | ||
type: 'confirm', | ||
name: 'linkToUsage', | ||
message: 'Do you want to add a footer with link to usage?', | ||
default: true | ||
}]; | ||
var uniqueFiles = _.flow(_.compact, _.uniq); | ||
module.exports = function () { | ||
@@ -89,3 +88,2 @@ return git.getRepoInfo().then(function (repoInfo) { | ||
} | ||
return inquirer.prompt(questions); | ||
@@ -104,3 +102,4 @@ }).then(function (answers) { | ||
contributors: [], | ||
contributorsPerLine: 7 | ||
contributorsPerLine: 7, | ||
linkToUsage: answers.linkToUsage | ||
}, | ||
@@ -107,0 +106,0 @@ contributorFile: answers.contributorFile, |
"use strict"; | ||
var url = require('url'); | ||
var fetch = require('node-fetch'); | ||
var _require = require('../util/url'), | ||
parseHttpUrl = _require.parseHttpUrl, | ||
isValidHttpUrl = _require.isValidHttpUrl; | ||
var _require = require('../util/url'), | ||
parseHttpUrl = _require.parseHttpUrl, | ||
isValidHttpUrl = _require.isValidHttpUrl; | ||
/** | ||
@@ -17,4 +16,2 @@ * Get the host based on public or enterprise GitHub. | ||
*/ | ||
function getApiHost(hostname) { | ||
@@ -24,3 +21,2 @@ if (!hostname) { | ||
} | ||
if (hostname !== 'https://github.com') { | ||
@@ -30,6 +26,4 @@ // Assume Github Enterprise | ||
} | ||
return hostname.replace(/:\/\//, '://api.'); | ||
} | ||
function getFetchHeaders(optionalPrivateToken) { | ||
@@ -39,14 +33,10 @@ if (optionalPrivateToken === void 0) { | ||
} | ||
var fetchHeaders = { | ||
'User-Agent': 'node-fetch' | ||
}; | ||
if (optionalPrivateToken && optionalPrivateToken.length > 0) { | ||
fetchHeaders.Authorization = `token ${optionalPrivateToken}`; | ||
} | ||
return fetchHeaders; | ||
} | ||
function getNextLink(link) { | ||
@@ -56,14 +46,10 @@ if (!link) { | ||
} | ||
var nextLink = link.split(',').find(function (s) { | ||
return s.includes('rel="next"'); | ||
}); | ||
if (!nextLink) { | ||
return null; | ||
} | ||
return nextLink.split(';')[0].slice(1, -1); | ||
return nextLink.split(';')[0].trim().slice(1, -1); | ||
} | ||
function getContributorsPage(githubUrl, optionalPrivateToken) { | ||
@@ -76,3 +62,2 @@ return fetch(githubUrl, { | ||
} | ||
return res.json().then(function (body) { | ||
@@ -82,3 +67,2 @@ if (res.status >= 400 || !res.ok) { | ||
} | ||
var contributorsIds = body.map(function (contributor) { | ||
@@ -88,3 +72,2 @@ return contributor.login; | ||
var nextLink = getNextLink(res.headers.get('link')); | ||
if (nextLink) { | ||
@@ -95,3 +78,2 @@ return getContributorsPage(nextLink, optionalPrivateToken).then(function (nextContributors) { | ||
} | ||
return contributorsIds; | ||
@@ -101,3 +83,2 @@ }); | ||
} | ||
var getUserInfo = function (username, hostname, optionalPrivateToken) { | ||
@@ -107,3 +88,2 @@ if (!username) { | ||
} | ||
var root = getApiHost(hostname); | ||
@@ -114,9 +94,10 @@ return fetch(`${root}/users/${username}`, { | ||
return res.json().then(function (body) { | ||
var profile = isValidHttpUrl(body.blog) ? body.blog : body.html_url; // Check for authentication required | ||
var profile = isValidHttpUrl(body.blog) ? body.blog : body.html_url; | ||
// Check for authentication required | ||
if (!profile && body.message.includes('Must authenticate') || res.status === 401) { | ||
throw new Error(`Missing authentication for GitHub API. Did you set PRIVATE_TOKEN?`); | ||
} // Github throwing specific errors as 200... | ||
} | ||
// Github throwing specific errors as 200... | ||
if (!profile && body.message) { | ||
@@ -129,3 +110,2 @@ if (body.message.toLowerCase().includes('api rate limit exceeded')) { | ||
} | ||
profile = parseHttpUrl(profile); | ||
@@ -141,3 +121,2 @@ return { | ||
}; | ||
var getContributors = function (owner, name, hostname, optionalPrivateToken) { | ||
@@ -147,3 +126,2 @@ var root = getApiHost(hostname); | ||
}; | ||
module.exports = { | ||
@@ -150,0 +128,0 @@ getUserInfo, |
"use strict"; | ||
var fetch = require('node-fetch'); | ||
var addPrivateToken = function (url, privateToken) { | ||
@@ -9,7 +8,5 @@ if (privateToken === void 0) { | ||
} | ||
if (privateToken === '') return url; | ||
return `${url}&private_token=${privateToken}`.replace(/\?/g, '&').replace('&', '?'); | ||
}; | ||
var getUserInfo = function (username, hostname, privateToken) { | ||
@@ -20,3 +17,2 @@ /* eslint-disable complexity */ | ||
} | ||
return fetch(addPrivateToken(`${hostname}/api/v4/users?username=${username}`, privateToken), { | ||
@@ -31,9 +27,8 @@ headers: { | ||
throw new Error(`User ${username} not found`); | ||
} // no private token present | ||
} | ||
// no private token present | ||
if (body.message) { | ||
throw new Error(body.message); | ||
} | ||
var user = body[0]; | ||
@@ -49,3 +44,2 @@ return { | ||
}; | ||
var getContributors = function (owner, name, hostname, privateToken) { | ||
@@ -55,3 +49,2 @@ if (!hostname) { | ||
} | ||
return fetch(addPrivateToken(`${hostname}/api/v4/projects?search=${name}`, privateToken), { | ||
@@ -67,5 +60,3 @@ headers: { | ||
} | ||
var project = null; | ||
for (var i = 0; i < projects.length; i++) { | ||
@@ -77,7 +68,5 @@ if (projects[i].path_with_namespace === `${owner}/${name}`) { | ||
} | ||
if (!project) { | ||
throw new Error(`Project ${owner}/${name} not found`); | ||
} | ||
return fetch(addPrivateToken(`${hostname}/api/v4/projects/${project.id}/repository/contributors`, privateToken), { | ||
@@ -91,3 +80,2 @@ headers: { | ||
} | ||
return newRes.json().then(function (contributors) { | ||
@@ -97,3 +85,2 @@ if (newRes.status >= 400 || !newRes.ok) { | ||
} | ||
return contributors.map(function (item) { | ||
@@ -107,3 +94,2 @@ return item.name; | ||
}; | ||
module.exports = { | ||
@@ -110,0 +96,0 @@ getUserInfo, |
"use strict"; | ||
var githubAPI = require('./github'); | ||
var gitlabAPI = require('./gitlab'); | ||
var privateToken = process.env && (process.env.ALL_CONTRIBUTORS_PRIVATE_TOKEN || process.env.PRIVATE_TOKEN) || ''; | ||
@@ -32,3 +30,2 @@ var SUPPORTED_REPO_TYPES = { | ||
}; | ||
var getChoices = function () { | ||
@@ -44,3 +41,2 @@ return Object.keys(SUPPORTED_REPO_TYPES).map(function (key) { | ||
}; | ||
var getHostname = function (repoType, repoHost) { | ||
@@ -52,6 +48,4 @@ if (repoHost) { | ||
} | ||
return null; | ||
}; | ||
var getCheckKey = function (repoType) { | ||
@@ -61,6 +55,4 @@ if (repoType in SUPPORTED_REPO_TYPES) { | ||
} | ||
return null; | ||
}; | ||
var getTypeName = function (repoType) { | ||
@@ -70,6 +62,4 @@ if (repoType in SUPPORTED_REPO_TYPES) { | ||
} | ||
return null; | ||
}; | ||
var getLinkToCommits = function (repoType) { | ||
@@ -79,6 +69,4 @@ if (repoType in SUPPORTED_REPO_TYPES) { | ||
} | ||
return null; | ||
}; | ||
var getLinkToIssues = function (repoType) { | ||
@@ -88,6 +76,4 @@ if (repoType in SUPPORTED_REPO_TYPES) { | ||
} | ||
return null; | ||
}; | ||
var getLinkToReviews = function (repoType) { | ||
@@ -97,6 +83,4 @@ if (repoType in SUPPORTED_REPO_TYPES) { | ||
} | ||
return null; | ||
}; | ||
var getUserInfo = function (username, repoType, repoHost) { | ||
@@ -106,6 +90,4 @@ if (repoType in SUPPORTED_REPO_TYPES) { | ||
} | ||
return null; | ||
}; | ||
var getContributors = function (owner, name, repoType, repoHost) { | ||
@@ -115,6 +97,4 @@ if (repoType in SUPPORTED_REPO_TYPES) { | ||
} | ||
return null; | ||
}; | ||
module.exports = { | ||
@@ -121,0 +101,0 @@ getChoices, |
"use strict"; | ||
var fs = require('fs'); | ||
var pify = require('pify'); | ||
var _ = require('lodash/fp'); | ||
var jf = require('json-fixer'); | ||
var _require = require('./formatting'), | ||
formatConfig = _require.formatConfig; | ||
function readConfig(configPath) { | ||
try { | ||
var _jf = jf(fs.readFileSync(configPath, 'utf-8')), | ||
config = _jf.data, | ||
changed = _jf.changed; | ||
config = _jf.data, | ||
changed = _jf.changed; | ||
if (!('repoType' in config)) { | ||
config.repoType = 'github'; | ||
} | ||
if (!('commitConvention' in config)) { | ||
config.commitConvention = 'none'; | ||
config.commitConvention = 'angular'; | ||
} | ||
if (changed) { | ||
//Updates the file with fixes | ||
fs.writeFileSync(configPath, JSON.stringify(config, null, 2)); | ||
fs.writeFileSync(configPath, formatConfig(configPath, config)); | ||
} | ||
return config; | ||
@@ -35,11 +29,8 @@ } catch (error) { | ||
} | ||
if (error.code === 'ENOENT') { | ||
throw new Error(`Configuration file not found: ${configPath}`); | ||
} | ||
throw error; | ||
} | ||
} | ||
function writeConfig(configPath, content) { | ||
@@ -49,17 +40,12 @@ if (!content.projectOwner) { | ||
} | ||
if (!content.projectName) { | ||
throw new Error(`Error! Project name is not set in ${configPath}`); | ||
} | ||
if (content.files && !content.files.length) { | ||
throw new Error(`Error! Project files was overridden and is empty in ${configPath}`); | ||
} | ||
return pify(fs.writeFile)(configPath, `${JSON.stringify(content, null, 2)}\n`); | ||
return pify(fs.writeFile)(configPath, `${formatConfig(configPath, content)}\n`); | ||
} | ||
function writeContributors(configPath, contributors) { | ||
var config; | ||
try { | ||
@@ -70,10 +56,7 @@ config = readConfig(configPath); | ||
} | ||
var content = _.assign(config, { | ||
contributors | ||
}); | ||
return writeConfig(configPath, content); | ||
} | ||
module.exports = { | ||
@@ -80,0 +63,0 @@ readConfig, |
"use strict"; | ||
var _ = require('lodash/fp'); | ||
var repo = require('../repo'); | ||
var defaultTypes = function (repoType) { | ||
@@ -141,8 +139,11 @@ return { | ||
description: 'Videos' | ||
}, | ||
promotion: { | ||
symbol: '📣', | ||
description: 'Promotion' | ||
} | ||
}; | ||
}; | ||
module.exports = function (options) { | ||
return _.assign(defaultTypes(options.repoType), options.types); | ||
}; |
"use strict"; | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); | ||
var path = require('path'); | ||
var spawn = require('child_process').spawn; | ||
var _ = require('lodash/fp'); | ||
var pify = require('pify'); | ||
var conventions = require('../init/commit-conventions'); | ||
var _require = require('./config-file'), | ||
readConfig = _require.readConfig; | ||
readConfig = _require.readConfig; | ||
var commitTemplate = '<%= prefix %> <%= (newContributor ? "Add" : "Update") %> @<%= username %> as a contributor'; | ||
@@ -32,10 +24,7 @@ var getRemoteOriginData = pify(function (cb) { | ||
}); | ||
function parse(originUrl) { | ||
var result = /:(\w+)\/([A-Za-z0-9-_]+)/.exec(originUrl); | ||
if (!result) { | ||
return null; | ||
} | ||
return { | ||
@@ -46,7 +35,5 @@ projectOwner: result[1], | ||
} | ||
function getRepoInfo() { | ||
return getRemoteOriginData().then(parse); | ||
} | ||
var spawnGitCommand = pify(function (args, cb) { | ||
@@ -67,3 +54,2 @@ var git = spawn('git', args); | ||
}); | ||
function commit(options, data) { | ||
@@ -80,3 +66,2 @@ var files = options.files.concat(options.config); | ||
})); | ||
if (commitConvention.lowercase) commitMessage = commitConvention.transform(commitMessage); | ||
@@ -86,3 +71,2 @@ return spawnGitCommand(['commit', '-m', commitMessage]); | ||
} | ||
module.exports = { | ||
@@ -89,0 +73,0 @@ commit, |
"use strict"; | ||
var fs = require('fs'); | ||
var pify = require('pify'); | ||
function read(filePath) { | ||
return pify(fs.readFile)(filePath, 'utf8'); | ||
} | ||
function write(filePath, content) { | ||
return pify(fs.writeFile)(filePath, content); | ||
} | ||
function injectContentBetween(lines, content, startIndex, endIndex) { | ||
return [].concat(lines.slice(0, startIndex), content, lines.slice(endIndex)); | ||
} | ||
module.exports = { | ||
@@ -20,0 +15,0 @@ read, |
@@ -6,3 +6,2 @@ "use strict"; | ||
} | ||
function isValidHttpUrl(input) { | ||
@@ -16,3 +15,2 @@ try { | ||
} | ||
function parseHttpUrl(input) { | ||
@@ -22,12 +20,8 @@ if (typeof input !== 'string') { | ||
} | ||
var url = new URL(new RegExp('^\\w+\\:\\/\\/').test(input) ? input : `http://${input}`); | ||
if (!isHttpProtocol(url.protocol)) { | ||
throw new TypeError('Provided URL has an invalid protocol'); | ||
} | ||
return url.toString(); | ||
} | ||
module.exports = { | ||
@@ -34,0 +28,0 @@ isHttpProtocol, |
{ | ||
"name": "all-contributors-cli", | ||
"version": "6.20.0", | ||
"version": "6.26.1", | ||
"description": "Tool to easily add recognition for new contributors", | ||
@@ -46,7 +46,7 @@ "bin": { | ||
"@babel/runtime": "^7.7.6", | ||
"async": "^3.0.1", | ||
"async": "^3.1.0", | ||
"chalk": "^4.0.0", | ||
"didyoumean": "^1.2.1", | ||
"inquirer": "^7.0.4", | ||
"json-fixer": "^1.5.1", | ||
"inquirer": "^7.3.3", | ||
"json-fixer": "^1.6.8", | ||
"lodash": "^4.11.2", | ||
@@ -58,5 +58,5 @@ "node-fetch": "^2.6.0", | ||
"devDependencies": { | ||
"codecov": "^3.1.0", | ||
"cz-conventional-changelog": "^3.0.0", | ||
"git-cz": "^4.1.0", | ||
"codecov": "^3.8.1", | ||
"cz-conventional-changelog": "^3.3.0", | ||
"git-cz": "^4.7.6", | ||
"kcd-scripts": "^6.2.0", | ||
@@ -66,2 +66,5 @@ "nock": "^12.0.0", | ||
}, | ||
"optionalDependencies": { | ||
"prettier": "^2" | ||
}, | ||
"eslintIgnore": [ | ||
@@ -68,0 +71,0 @@ "node_modules", |
190
README.md
<!-- START doctoc generated TOC please keep comment here to allow auto update --> | ||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> | ||
- [ all-contributors-cli ](#all-contributors-cli) | ||
- [ | ||
all-contributors-cli | ||
](#all-contributors-cli) | ||
- [The problem](#the-problem) | ||
@@ -46,4 +49,4 @@ - [This solution](#this-solution) | ||
[![Build Status](https://img.shields.io/circleci/project/all-contributors/all-contributors-cli/master.svg)](https://circleci.com/gh/all-contributors/workflows/all-contributors-cli/tree/master) | ||
[![Code Coverage](https://img.shields.io/codecov/c/github/all-contributors/all-contributors-cli.svg)](https://codecov.io/github/all-contributors/all-contributors-cli) | ||
[![Build Status](https://dl.circleci.com/status-badge/img/gh/all-contributors/cli/tree/master.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/all-contributors/cli/tree/master) | ||
[![Code Coverage](https://codecov.io/gh/all-contributors/cli/branch/master/graph/badge.svg?token=jHIrCqevli)](https://codecov.io/gh/all-contributors/cli) | ||
[![Version](https://img.shields.io/npm/v/all-contributors-cli.svg)](https://www.npmjs.com/package/all-contributors-cli) | ||
@@ -83,82 +86,109 @@ [![Downloads](https://img.shields.io/npm/dm/all-contributors-cli.svg)](http://www.npmtrends.com/all-contributors-cli) | ||
<table> | ||
<tr> | ||
<td align="center"><a href="https://github.com/jfmengels"><img src="https://avatars.githubusercontent.com/u/3869412?v=3" width="100px;" alt=""/><br /><sub><b>Jeroen Engels</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jfmengels" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jfmengels" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jfmengels" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="http://kentcdodds.com/"><img src="https://avatars.githubusercontent.com/u/1500684?v=3" width="100px;" alt=""/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kentcdodds" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kentcdodds" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/jccguimaraes"><img src="https://avatars.githubusercontent.com/u/14871650?v=3" width="100px;" alt=""/><br /><sub><b>João Guimarães</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jccguimaraes" title="Code">💻</a></td> | ||
<td align="center"><a href="http://beneb.info"><img src="https://avatars.githubusercontent.com/u/1282980?v=3" width="100px;" alt=""/><br /><sub><b>Ben Briggs</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=ben-eb" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/itaisteinherz"><img src="https://avatars.githubusercontent.com/u/22768990?v=3" width="100px;" alt=""/><br /><sub><b>Itai Steinherz</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=itaisteinherz" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=itaisteinherz" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/alexjoverm"><img src="https://avatars.githubusercontent.com/u/5701162?v=3" width="100px;" alt=""/><br /><sub><b>Alex Jover</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=alexjoverm" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=alexjoverm" title="Documentation">📖</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://jerodsanto.net"><img src="https://avatars3.githubusercontent.com/u/8212?v=3" width="100px;" alt=""/><br /><sub><b>Jerod Santo</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jerodsanto" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/kevinjalbert"><img src="https://avatars1.githubusercontent.com/u/574871?v=3" width="100px;" alt=""/><br /><sub><b>Kevin Jalbert</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kevinjalbert" title="Code">💻</a></td> | ||
<td align="center"><a href="https://i.am.charlike.online"><img src="https://avatars3.githubusercontent.com/u/5038030?v=4" width="100px;" alt=""/><br /><sub><b>tunnckoCore</b></sub></a><br /><a href="#tool-charlike" title="Tools">🔧</a></td> | ||
<td align="center"><a href="https://machour.idk.tn/"><img src="https://avatars2.githubusercontent.com/u/304450?v=4" width="100px;" alt=""/><br /><sub><b>Mehdi Achour</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=machour" title="Code">💻</a></td> | ||
<td align="center"><a href="https://codsen.com"><img src="https://avatars1.githubusercontent.com/u/8344688?v=4" width="100px;" alt=""/><br /><sub><b>Roy Revelt</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Arevelt" title="Bug reports">🐛</a></td> | ||
<td align="center"><a href="https://github.com/chrisinajar"><img src="https://avatars1.githubusercontent.com/u/422331?v=4" width="100px;" alt=""/><br /><sub><b>Chris Vickery</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=chrisinajar" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/brycereynolds"><img src="https://avatars2.githubusercontent.com/u/1026002?v=4" width="100px;" alt=""/><br /><sub><b>Bryce Reynolds</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=brycereynolds" title="Code">💻</a></td> | ||
<td align="center"><a href="http://www.jmeas.com"><img src="https://avatars3.githubusercontent.com/u/2322305?v=4" width="100px;" alt=""/><br /><sub><b>James, please</b></sub></a><br /><a href="#ideas-jmeas" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jmeas" title="Code">💻</a></td> | ||
<td align="center"><a href="http://www.spyros.io"><img src="https://avatars3.githubusercontent.com/u/1057324?v=4" width="100px;" alt=""/><br /><sub><b>Spyros Ioakeimidis</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=spirosikmd" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/fadc80"><img src="https://avatars3.githubusercontent.com/u/12335761?v=4" width="100px;" alt=""/><br /><sub><b>Fernando Costa</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=fadc80" title="Code">💻</a></td> | ||
<td align="center"><a href="https://snipe.net"><img src="https://avatars0.githubusercontent.com/u/197404?v=4" width="100px;" alt=""/><br /><sub><b>snipe</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=snipe" title="Documentation">📖</a></td> | ||
<td align="center"><a href="http://gantlaborde.com/"><img src="https://avatars0.githubusercontent.com/u/997157?v=4" width="100px;" alt=""/><br /><sub><b>Gant Laborde</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=GantMan" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://in.linkedin.com/in/mzubairahmed"><img src="https://avatars2.githubusercontent.com/u/17708702?v=4" width="100px;" alt=""/><br /><sub><b>Md Zubair Ahmed</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=M-ZubairAhmed" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3AM-ZubairAhmed" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=M-ZubairAhmed" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=M-ZubairAhmed" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="http://bogas04.github.io"><img src="https://avatars3.githubusercontent.com/u/6177621?v=4" width="100px;" alt=""/><br /><sub><b>Divjot Singh</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=bogas04" title="Documentation">📖</a></td> | ||
<td align="center"><a href="https://github.com/tigermarques"><img src="https://avatars0.githubusercontent.com/u/15315098?v=4" width="100px;" alt=""/><br /><sub><b>João Marques</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tigermarques" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tigermarques" title="Documentation">📖</a> <a href="#ideas-tigermarques" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
<td align="center"><a href="http://hipstersmoothie.com"><img src="https://avatars3.githubusercontent.com/u/1192452?v=4" width="100px;" alt=""/><br /><sub><b>Andrew Lisowski</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=hipstersmoothie" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=hipstersmoothie" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=hipstersmoothie" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/chinesedfan"><img src="https://avatars3.githubusercontent.com/u/1736154?v=4" width="100px;" alt=""/><br /><sub><b>Xianming Zhong</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=chinesedfan" title="Documentation">📖</a></td> | ||
<td align="center"><a href="https://github.com/xuchaoying"><img src="https://avatars2.githubusercontent.com/u/8073251?v=4" width="100px;" alt=""/><br /><sub><b>C.Y.Xu</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=xuchaoying" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/chris-dura"><img src="https://avatars3.githubusercontent.com/u/3680914?v=4" width="100px;" alt=""/><br /><sub><b>Dura</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=chris-dura" title="Documentation">📖</a></td> | ||
<td align="center"><a href="https://jakebolam.com"><img src="https://avatars2.githubusercontent.com/u/3534236?v=4" width="100px;" alt=""/><br /><sub><b>Jake Bolam</b></sub></a><br /><a href="#infra-jakebolam" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jakebolam" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jakebolam" title="Documentation">📖</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jakebolam" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3Ajakebolam" title="Reviewed Pull Requests">👀</a> <a href="#question-jakebolam" title="Answering Questions">💬</a></td> | ||
<td align="center"><a href="http://maxcubing.wordpress.com"><img src="https://avatars0.githubusercontent.com/u/8260834?v=4" width="100px;" alt=""/><br /><sub><b>Maximilian Berkmann</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Berkmann18" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Berkmann18" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Berkmann18" title="Documentation">📖</a> <a href="#tool-Berkmann18" title="Tools">🔧</a> <a href="#maintenance-Berkmann18" title="Maintenance">🚧</a> <a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3ABerkmann18" title="Reviewed Pull Requests">👀</a> <a href="#question-Berkmann18" title="Answering Questions">💬</a></td> | ||
<td align="center"><a href="https://github.com/tbenning"><img src="https://avatars2.githubusercontent.com/u/7265547?v=4" width="100px;" alt=""/><br /><sub><b>tbenning</b></sub></a><br /><a href="#design-tbenning" title="Design">🎨</a></td> | ||
<td align="center"><a href="https://twitter.com/ehmicky"><img src="https://avatars2.githubusercontent.com/u/8136211?v=4" width="100px;" alt=""/><br /><sub><b>ehmicky</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=ehmicky" title="Code">💻</a></td> | ||
<td align="center"><a href="https://ghuser.io/jamesgeorge007"><img src="https://avatars2.githubusercontent.com/u/25279263?v=4" width="100px;" alt=""/><br /><sub><b>James George</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jamesgeorge007" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/nschonni"><img src="https://avatars2.githubusercontent.com/u/1297909?v=4" width="100px;" alt=""/><br /><sub><b>Nick Schonning</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=nschonni" title="Code">💻</a></td> | ||
<td align="center"><a href="https://cezaraugusto.net/"><img src="https://avatars0.githubusercontent.com/u/4672033?v=4" width="100px;" alt=""/><br /><sub><b>Cezar Augusto</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=cezaraugusto" title="Documentation">📖</a></td> | ||
<td align="center"><a href="https://reinhold.is"><img src="https://avatars1.githubusercontent.com/u/5678122?v=4" width="100px;" alt=""/><br /><sub><b>Jeppe Reinhold</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=JReinhold" title="Code">💻</a></td> | ||
<td align="center"><a href="https://rachelcarmena.github.io"><img src="https://avatars0.githubusercontent.com/u/22792183?v=4" width="100px;" alt=""/><br /><sub><b>Rachel M. Carmena</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=rachelcarmena" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/simon300000"><img src="https://avatars1.githubusercontent.com/u/12656264?v=4" width="100px;" alt=""/><br /><sub><b>simon3000</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=simon300000" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://sno2wman.dev/"><img src="https://avatars3.githubusercontent.com/u/15155608?v=4" width="100px;" alt=""/><br /><sub><b>SnO₂WMaN</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=SnO2WMaN" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://www.destro.me"><img src="https://avatars1.githubusercontent.com/u/7031675?v=4" width="100px;" alt=""/><br /><sub><b>Fabrizio</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Adexpota" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=dexpota" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/kharaone"><img src="https://avatars1.githubusercontent.com/u/6599271?v=4" width="100px;" alt=""/><br /><sub><b>kharaone</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=kharaone" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/marceloalves"><img src="https://avatars1.githubusercontent.com/u/216782?v=4" width="100px;" alt=""/><br /><sub><b>Marcelo Alves</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=MarceloAlves" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=MarceloAlves" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://anandchowdhary.com/?utm_source=github&utm_campaign=about-link"><img src="https://avatars3.githubusercontent.com/u/2841780?v=4" width="100px;" alt=""/><br /><sub><b>Anand Chowdhary</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=AnandChowdhary" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3AAnandChowdhary" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=AnandChowdhary" title="Code">💻</a></td> | ||
<td align="center"><a href="https://phacks.dev/"><img src="https://avatars1.githubusercontent.com/u/2587348?v=4" width="100px;" alt=""/><br /><sub><b>Nicolas Goutay</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=phacks" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/tylerkrupicka"><img src="https://avatars1.githubusercontent.com/u/5761061?s=460&v=4" width="100px;" alt=""/><br /><sub><b>Tyler Krupicka</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tylerkrupicka" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=tylerkrupicka" title="Tests">⚠️</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/smoia"><img src="https://avatars3.githubusercontent.com/u/35300580?v=4" width="100px;" alt=""/><br /><sub><b>Stefano Moia</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=smoia" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/ilai-deutel"><img src="https://avatars0.githubusercontent.com/u/10098207?v=4" width="100px;" alt=""/><br /><sub><b>Ilaï Deutel</b></sub></a><br /><a href="#platform-ilai-deutel" title="Packaging/porting to new platform">📦</a></td> | ||
<td align="center"><a href="https://github.com/jdalrymple"><img src="https://avatars3.githubusercontent.com/u/3743662?v=4" width="100px;" alt=""/><br /><sub><b>Justin Dalrymple</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=jdalrymple" title="Code">💻</a></td> | ||
<td align="center"><a href="https://github.com/k3nsei"><img src="https://avatars2.githubusercontent.com/u/190422?v=4" width="100px;" alt=""/><br /><sub><b>Piotr Stępniewski</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Ak3nsei" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=k3nsei" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=k3nsei" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://dev.to/gr2m"><img src="https://avatars3.githubusercontent.com/u/39992?v=4" width="100px;" alt=""/><br /><sub><b>Gregor Martynus</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3Agr2m" title="Reviewed Pull Requests">👀</a> <a href="#question-gr2m" title="Answering Questions">💬</a></td> | ||
<td align="center"><a href="https://sinchang.me/"><img src="https://avatars0.githubusercontent.com/u/3297859?v=4" width="100px;" alt=""/><br /><sub><b>Jeff Wen</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/pulls?q=is%3Apr+reviewed-by%3Asinchang" title="Reviewed Pull Requests">👀</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/pavelloz"><img src="https://avatars1.githubusercontent.com/u/546845?v=4" width="100px;" alt=""/><br /><sub><b>Paweł Kowalski</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=pavelloz" title="Code">💻</a></td> | ||
<td align="center"><a href="https://www.linkedin.com/in/mloning/"><img src="https://avatars3.githubusercontent.com/u/21020482?v=4" width="100px;" alt=""/><br /><sub><b>Markus Löning</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=mloning" title="Code">💻</a></td> | ||
<td align="center"><a href="https://dlaa.me/"><img src="https://avatars1.githubusercontent.com/u/1828270?v=4" width="100px;" alt=""/><br /><sub><b>David Anson</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3ADavidAnson" title="Bug reports">🐛</a></td> | ||
<td align="center"><a href="https://favware.tech/"><img src="https://avatars3.githubusercontent.com/u/4019718?v=4" width="100px;" alt=""/><br /><sub><b>Jeroen Claassens</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=Favna" title="Code">💻</a></td> | ||
<td align="center"><a href="https://erekspeed.com"><img src="https://avatars3.githubusercontent.com/u/1176550?v=4" width="100px;" alt=""/><br /><sub><b>Erek Speed</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=melink14" title="Code">💻</a></td> | ||
<td align="center"><a href="http://www.hirez.io"><img src="https://avatars1.githubusercontent.com/u/1430726?v=4" width="100px;" alt=""/><br /><sub><b>Shai Reznik</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/issues?q=author%3Ashairez" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=shairez" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=shairez" title="Tests">⚠️</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://darekkay.com"><img src="https://avatars0.githubusercontent.com/u/3101914?v=4" width="100px;" alt=""/><br /><sub><b>Darek Kay</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=darekkay" title="Code">💻</a> <a href="https://github.com/all-contributors/all-contributors-cli/commits?author=darekkay" title="Tests">⚠️</a></td> | ||
<td align="center"><a href="https://github.com/LaChapeliere"><img src="https://avatars2.githubusercontent.com/u/7062546?v=4" width="100px;" alt=""/><br /><sub><b>LaChapeliere</b></sub></a><br /><a href="https://github.com/all-contributors/all-contributors-cli/commits?author=LaChapeliere" title="Code">💻</a></td> | ||
</tr> | ||
<tbody> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/jfmengels"><img src="https://avatars.githubusercontent.com/u/3869412?v=3?s=100" width="100px;" alt="Jeroen Engels"/><br /><sub><b>Jeroen Engels</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jfmengels" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=jfmengels" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=jfmengels" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://kentcdodds.com/"><img src="https://avatars.githubusercontent.com/u/1500684?v=3?s=100" width="100px;" alt="Kent C. Dodds"/><br /><sub><b>Kent C. Dodds</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=kentcdodds" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=kentcdodds" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/jccguimaraes"><img src="https://avatars.githubusercontent.com/u/14871650?v=3?s=100" width="100px;" alt="João Guimarães"/><br /><sub><b>João Guimarães</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jccguimaraes" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://beneb.info"><img src="https://avatars.githubusercontent.com/u/1282980?v=3?s=100" width="100px;" alt="Ben Briggs"/><br /><sub><b>Ben Briggs</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=ben-eb" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/itaisteinherz"><img src="https://avatars.githubusercontent.com/u/22768990?v=3?s=100" width="100px;" alt="Itai Steinherz"/><br /><sub><b>Itai Steinherz</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=itaisteinherz" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=itaisteinherz" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/alexjoverm"><img src="https://avatars.githubusercontent.com/u/5701162?v=3?s=100" width="100px;" alt="Alex Jover"/><br /><sub><b>Alex Jover</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=alexjoverm" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=alexjoverm" title="Documentation">📖</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://jerodsanto.net"><img src="https://avatars3.githubusercontent.com/u/8212?v=3?s=100" width="100px;" alt="Jerod Santo"/><br /><sub><b>Jerod Santo</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jerodsanto" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/kevinjalbert"><img src="https://avatars1.githubusercontent.com/u/574871?v=3?s=100" width="100px;" alt="Kevin Jalbert"/><br /><sub><b>Kevin Jalbert</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=kevinjalbert" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://i.am.charlike.online"><img src="https://avatars3.githubusercontent.com/u/5038030?v=4?s=100" width="100px;" alt="tunnckoCore"/><br /><sub><b>tunnckoCore</b></sub></a><br /><a href="#tool-charlike" title="Tools">🔧</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://machour.idk.tn/"><img src="https://avatars2.githubusercontent.com/u/304450?v=4?s=100" width="100px;" alt="Mehdi Achour"/><br /><sub><b>Mehdi Achour</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=machour" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://codsen.com"><img src="https://avatars1.githubusercontent.com/u/8344688?v=4?s=100" width="100px;" alt="Roy Revelt"/><br /><sub><b>Roy Revelt</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Arevelt" title="Bug reports">🐛</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/chrisinajar"><img src="https://avatars1.githubusercontent.com/u/422331?v=4?s=100" width="100px;" alt="Chris Vickery"/><br /><sub><b>Chris Vickery</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=chrisinajar" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/brycereynolds"><img src="https://avatars2.githubusercontent.com/u/1026002?v=4?s=100" width="100px;" alt="Bryce Reynolds"/><br /><sub><b>Bryce Reynolds</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=brycereynolds" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://www.jmeas.com"><img src="https://avatars3.githubusercontent.com/u/2322305?v=4?s=100" width="100px;" alt="James, please"/><br /><sub><b>James, please</b></sub></a><br /><a href="#ideas-jmeas" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/all-contributors/cli/commits?author=jmeas" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://www.spyros.io"><img src="https://avatars3.githubusercontent.com/u/1057324?v=4?s=100" width="100px;" alt="Spyros Ioakeimidis"/><br /><sub><b>Spyros Ioakeimidis</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=spirosikmd" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/fadc80"><img src="https://avatars3.githubusercontent.com/u/12335761?v=4?s=100" width="100px;" alt="Fernando Costa"/><br /><sub><b>Fernando Costa</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=fadc80" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://snipe.net"><img src="https://avatars0.githubusercontent.com/u/197404?v=4?s=100" width="100px;" alt="snipe"/><br /><sub><b>snipe</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=snipe" title="Documentation">📖</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://gantlaborde.com/"><img src="https://avatars0.githubusercontent.com/u/997157?v=4?s=100" width="100px;" alt="Gant Laborde"/><br /><sub><b>Gant Laborde</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=GantMan" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://in.linkedin.com/in/mzubairahmed"><img src="https://avatars2.githubusercontent.com/u/17708702?v=4?s=100" width="100px;" alt="Md Zubair Ahmed"/><br /><sub><b>Md Zubair Ahmed</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=M-ZubairAhmed" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/issues?q=author%3AM-ZubairAhmed" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=M-ZubairAhmed" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=M-ZubairAhmed" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://bogas04.github.io"><img src="https://avatars3.githubusercontent.com/u/6177621?v=4?s=100" width="100px;" alt="Divjot Singh"/><br /><sub><b>Divjot Singh</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=bogas04" title="Documentation">📖</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/tigermarques"><img src="https://avatars0.githubusercontent.com/u/15315098?v=4?s=100" width="100px;" alt="João Marques"/><br /><sub><b>João Marques</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=tigermarques" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=tigermarques" title="Documentation">📖</a> <a href="#ideas-tigermarques" title="Ideas, Planning, & Feedback">🤔</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://hipstersmoothie.com"><img src="https://avatars3.githubusercontent.com/u/1192452?v=4?s=100" width="100px;" alt="Andrew Lisowski"/><br /><sub><b>Andrew Lisowski</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=hipstersmoothie" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=hipstersmoothie" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=hipstersmoothie" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/chinesedfan"><img src="https://avatars3.githubusercontent.com/u/1736154?v=4?s=100" width="100px;" alt="Xianming Zhong"/><br /><sub><b>Xianming Zhong</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=chinesedfan" title="Documentation">📖</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/xuchaoying"><img src="https://avatars2.githubusercontent.com/u/8073251?v=4?s=100" width="100px;" alt="C.Y.Xu"/><br /><sub><b>C.Y.Xu</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=xuchaoying" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/chris-dura"><img src="https://avatars3.githubusercontent.com/u/3680914?v=4?s=100" width="100px;" alt="Dura"/><br /><sub><b>Dura</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=chris-dura" title="Documentation">📖</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://jakebolam.com"><img src="https://avatars2.githubusercontent.com/u/3534236?v=4?s=100" width="100px;" alt="Jake Bolam"/><br /><sub><b>Jake Bolam</b></sub></a><br /><a href="#infra-jakebolam" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="https://github.com/all-contributors/cli/commits?author=jakebolam" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=jakebolam" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=jakebolam" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3Ajakebolam" title="Reviewed Pull Requests">👀</a> <a href="#question-jakebolam" title="Answering Questions">💬</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://maxcubing.wordpress.com"><img src="https://avatars0.githubusercontent.com/u/8260834?v=4?s=100" width="100px;" alt="Maximilian Berkmann"/><br /><sub><b>Maximilian Berkmann</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=Berkmann18" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=Berkmann18" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/commits?author=Berkmann18" title="Documentation">📖</a> <a href="#tool-Berkmann18" title="Tools">🔧</a> <a href="#maintenance-Berkmann18" title="Maintenance">🚧</a> <a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3ABerkmann18" title="Reviewed Pull Requests">👀</a> <a href="#question-Berkmann18" title="Answering Questions">💬</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/tbenning"><img src="https://avatars2.githubusercontent.com/u/7265547?v=4?s=100" width="100px;" alt="tbenning"/><br /><sub><b>tbenning</b></sub></a><br /><a href="#design-tbenning" title="Design">🎨</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://twitter.com/ehmicky"><img src="https://avatars2.githubusercontent.com/u/8136211?v=4?s=100" width="100px;" alt="ehmicky"/><br /><sub><b>ehmicky</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=ehmicky" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://ghuser.io/jamesgeorge007"><img src="https://avatars2.githubusercontent.com/u/25279263?v=4?s=100" width="100px;" alt="James George"/><br /><sub><b>James George</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jamesgeorge007" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/nschonni"><img src="https://avatars2.githubusercontent.com/u/1297909?v=4?s=100" width="100px;" alt="Nick Schonning"/><br /><sub><b>Nick Schonning</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=nschonni" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://cezaraugusto.net/"><img src="https://avatars0.githubusercontent.com/u/4672033?v=4?s=100" width="100px;" alt="Cezar Augusto"/><br /><sub><b>Cezar Augusto</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=cezaraugusto" title="Documentation">📖</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://reinhold.is"><img src="https://avatars1.githubusercontent.com/u/5678122?v=4?s=100" width="100px;" alt="Jeppe Reinhold"/><br /><sub><b>Jeppe Reinhold</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=JReinhold" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://rachelcarmena.github.io"><img src="https://avatars0.githubusercontent.com/u/22792183?v=4?s=100" width="100px;" alt="Rachel M. Carmena"/><br /><sub><b>Rachel M. Carmena</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=rachelcarmena" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/simon300000"><img src="https://avatars1.githubusercontent.com/u/12656264?v=4?s=100" width="100px;" alt="simon3000"/><br /><sub><b>simon3000</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=simon300000" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://sno2wman.dev/"><img src="https://avatars3.githubusercontent.com/u/15155608?v=4?s=100" width="100px;" alt="SnO₂WMaN"/><br /><sub><b>SnO₂WMaN</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=SnO2WMaN" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://www.destro.me"><img src="https://avatars1.githubusercontent.com/u/7031675?v=4?s=100" width="100px;" alt="Fabrizio"/><br /><sub><b>Fabrizio</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Adexpota" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=dexpota" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/kharaone"><img src="https://avatars1.githubusercontent.com/u/6599271?v=4?s=100" width="100px;" alt="kharaone"/><br /><sub><b>kharaone</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=kharaone" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/marceloalves"><img src="https://avatars1.githubusercontent.com/u/216782?v=4?s=100" width="100px;" alt="Marcelo Alves"/><br /><sub><b>Marcelo Alves</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=MarceloAlves" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=MarceloAlves" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://anandchowdhary.com/?utm_source=github&utm_campaign=about-link"><img src="https://avatars3.githubusercontent.com/u/2841780?v=4?s=100" width="100px;" alt="Anand Chowdhary"/><br /><sub><b>Anand Chowdhary</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=AnandChowdhary" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/issues?q=author%3AAnandChowdhary" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=AnandChowdhary" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://phacks.dev/"><img src="https://avatars1.githubusercontent.com/u/2587348?v=4?s=100" width="100px;" alt="Nicolas Goutay"/><br /><sub><b>Nicolas Goutay</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=phacks" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/tylerkrupicka"><img src="https://avatars1.githubusercontent.com/u/5761061?s=460&v=4?s=100" width="100px;" alt="Tyler Krupicka"/><br /><sub><b>Tyler Krupicka</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=tylerkrupicka" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=tylerkrupicka" title="Tests">⚠️</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/smoia"><img src="https://avatars3.githubusercontent.com/u/35300580?v=4?s=100" width="100px;" alt="Stefano Moia"/><br /><sub><b>Stefano Moia</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=smoia" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/ilai-deutel"><img src="https://avatars0.githubusercontent.com/u/10098207?v=4?s=100" width="100px;" alt="Ilaï Deutel"/><br /><sub><b>Ilaï Deutel</b></sub></a><br /><a href="#platform-ilai-deutel" title="Packaging/porting to new platform">📦</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/jdalrymple"><img src="https://avatars3.githubusercontent.com/u/3743662?v=4?s=100" width="100px;" alt="Justin Dalrymple"/><br /><sub><b>Justin Dalrymple</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=jdalrymple" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=jdalrymple" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/k3nsei"><img src="https://avatars2.githubusercontent.com/u/190422?v=4?s=100" width="100px;" alt="Piotr Stępniewski"/><br /><sub><b>Piotr Stępniewski</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Ak3nsei" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=k3nsei" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=k3nsei" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://dev.to/gr2m"><img src="https://avatars3.githubusercontent.com/u/39992?v=4?s=100" width="100px;" alt="Gregor Martynus"/><br /><sub><b>Gregor Martynus</b></sub></a><br /><a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3Agr2m" title="Reviewed Pull Requests">👀</a> <a href="#question-gr2m" title="Answering Questions">💬</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://sinchang.me/"><img src="https://avatars0.githubusercontent.com/u/3297859?v=4?s=100" width="100px;" alt="Jeff Wen"/><br /><sub><b>Jeff Wen</b></sub></a><br /><a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3Asinchang" title="Reviewed Pull Requests">👀</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/pavelloz"><img src="https://avatars1.githubusercontent.com/u/546845?v=4?s=100" width="100px;" alt="Paweł Kowalski"/><br /><sub><b>Paweł Kowalski</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=pavelloz" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://www.linkedin.com/in/mloning/"><img src="https://avatars3.githubusercontent.com/u/21020482?v=4?s=100" width="100px;" alt="Markus Löning"/><br /><sub><b>Markus Löning</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=mloning" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://dlaa.me/"><img src="https://avatars1.githubusercontent.com/u/1828270?v=4?s=100" width="100px;" alt="David Anson"/><br /><sub><b>David Anson</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3ADavidAnson" title="Bug reports">🐛</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://favware.tech/"><img src="https://avatars3.githubusercontent.com/u/4019718?v=4?s=100" width="100px;" alt="Jeroen Claassens"/><br /><sub><b>Jeroen Claassens</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=Favna" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://erekspeed.com"><img src="https://avatars3.githubusercontent.com/u/1176550?v=4?s=100" width="100px;" alt="Erek Speed"/><br /><sub><b>Erek Speed</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=melink14" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://www.hirez.io"><img src="https://avatars1.githubusercontent.com/u/1430726?v=4?s=100" width="100px;" alt="Shai Reznik"/><br /><sub><b>Shai Reznik</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Ashairez" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=shairez" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=shairez" title="Tests">⚠️</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://darekkay.com"><img src="https://avatars0.githubusercontent.com/u/3101914?v=4?s=100" width="100px;" alt="Darek Kay"/><br /><sub><b>Darek Kay</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=darekkay" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/commits?author=darekkay" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/LaChapeliere"><img src="https://avatars2.githubusercontent.com/u/7062546?v=4?s=100" width="100px;" alt="LaChapeliere"/><br /><sub><b>LaChapeliere</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=LaChapeliere" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/SirWindfield"><img src="https://avatars.githubusercontent.com/u/5113257?v=4?s=100" width="100px;" alt="SirWindfield"/><br /><sub><b>SirWindfield</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=SirWindfield" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://vapurrmaid.ca"><img src="https://avatars.githubusercontent.com/u/11184711?v=4?s=100" width="100px;" alt="G r e y"/><br /><sub><b>G r e y</b></sub></a><br /><a href="#security-vapurrmaid" title="Security">🛡️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://chezsoi.org/lucas/blog/"><img src="https://avatars.githubusercontent.com/u/925560?v=4?s=100" width="100px;" alt="Lucas Cimon"/><br /><sub><b>Lucas Cimon</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=Lucas-C" title="Documentation">📖</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://www.joshuakgoldberg.com"><img src="https://avatars.githubusercontent.com/u/3335181?v=4?s=100" width="100px;" alt="Josh Goldberg"/><br /><sub><b>Josh Goldberg</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3AJoshuaKGoldberg" title="Bug reports">🐛</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://tenshiamd.com"><img src="https://avatars.githubusercontent.com/u/13580338?v=4?s=100" width="100px;" alt="Angel Aviel Domaoan"/><br /><sub><b>Angel Aviel Domaoan</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=tenshiAMD" title="Code">💻</a> <a href="https://github.com/all-contributors/cli/pulls?q=is%3Apr+reviewed-by%3AtenshiAMD" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/all-contributors/cli/commits?author=tenshiAMD" title="Documentation">📖</a> <a href="https://github.com/all-contributors/cli/commits?author=tenshiAMD" title="Tests">⚠️</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://12rambau.github.io/web-resume/"><img src="https://avatars.githubusercontent.com/u/12596392?v=4?s=100" width="100px;" alt="Rambaud Pierrick"/><br /><sub><b>Rambaud Pierrick</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=12rambau" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://www.lieret.net"><img src="https://avatars.githubusercontent.com/u/13602468?v=4?s=100" width="100px;" alt="Kilian Lieret"/><br /><sub><b>Kilian Lieret</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Aklieret" title="Bug reports">🐛</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/KnorpelSenf"><img src="https://avatars.githubusercontent.com/u/12952387?v=4?s=100" width="100px;" alt="KnorpelSenf"/><br /><sub><b>KnorpelSenf</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3AKnorpelSenf" title="Bug reports">🐛</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="https://rea9lizer.carrd.co"><img src="https://avatars.githubusercontent.com/u/68494132?v=4?s=100" width="100px;" alt="QriLa | Hyeon Gu"/><br /><sub><b>QriLa | Hyeon Gu</b></sub></a><br /><a href="https://github.com/all-contributors/cli/commits?author=qyurila" title="Code">💻</a></td> | ||
<td align="center" valign="top" width="16.66%"><a href="http://www.dwmkerr.com"><img src="https://avatars.githubusercontent.com/u/1926984?v=4?s=100" width="100px;" alt="Dave Kerr"/><br /><sub><b>Dave Kerr</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Adwmkerr" title="Bug reports">🐛</a> <a href="https://github.com/all-contributors/cli/commits?author=dwmkerr" title="Tests">⚠️</a> <a href="https://github.com/all-contributors/cli/commits?author=dwmkerr" title="Code">💻</a></td> | ||
</tr> | ||
<tr> | ||
<td align="center" valign="top" width="16.66%"><a href="https://github.com/schweden1997"><img src="https://avatars.githubusercontent.com/u/6765735?v=4?s=100" width="100px;" alt="Marco De Gaetano"/><br /><sub><b>Marco De Gaetano</b></sub></a><br /><a href="https://github.com/all-contributors/cli/issues?q=author%3Aschweden1997" title="Bug reports">🐛</a></td> | ||
</tr> | ||
</tbody> | ||
<tfoot> | ||
<tr> | ||
<td align="center" size="13px" colspan="6"> | ||
<img src="https://raw.githubusercontent.com/all-contributors/all-contributors-cli/1b8533af435da9854653492b1327a23a4dbd0a10/assets/logo-small.svg"> | ||
<a href="https://all-contributors.js.org/docs/en/bot/usage">Add your contributions</a> | ||
</img> | ||
</td> | ||
</tr> | ||
</tfoot> | ||
</table> | ||
<!-- markdownlint-enable --> | ||
<!-- markdownlint-restore --> | ||
<!-- prettier-ignore-end --> | ||
<!-- ALL-CONTRIBUTORS-LIST:END --> | ||
@@ -165,0 +195,0 @@ |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
81824
28
1323
201
11
+ Addedprettier@2.8.8(transitive)
Updatedasync@^3.1.0
Updatedinquirer@^7.3.3
Updatedjson-fixer@^1.6.8