for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
'use strict'
const fs = require('fs')
const inquirer = require('inquirer')
const output = require('../output')
const Kits = require('../kits/Kits')
const Kit = require('../kits/Kit')
module.exports = function (kit, slug) {
inquirer.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt'))
var questions = []
if (!kit && !slug && fs.existsSync('module.json')) {
output.warn('Are you sure you want to create a new module here? There already seems to be one in ' +
'this directory. Instead, did you mean to type `inc run`?\n')
}
if (!kit || !kit.length) {
questions.push({
type: 'autocomplete',
name: 'kit',
message: 'starter kit:',
source: function (answers, input) {
return new Promise(function (resolve) {
Kits.list(function (list) {
resolve(input && input.length ? list.filter(function (value) {
return value.indexOf(input) >= 0
}) : list)
})
},
default: 'basic'
// Slug is set
if (!slug || !slug.length) {
type: 'input',
name: 'slug',
message: 'module name:',
validate: function (value) {
if (value.match(/^([a-z0-9-]+\/)?[a-z0-9-]+$/)) {
return true
return 'Module name should only contain lowercase letters, numbers and dashes.'
// Need to ask for slug
inquirer.prompt(questions).then(function (answers) {
Kit.create(answers.kit || kit, answers.slug || slug)