1
0
Fork 0

🚧 Ongoing work on CFP

This commit is contained in:
Joost De Cock 2019-05-02 12:39:30 +02:00
parent 7cc4130a11
commit 6b6f6fd7cd
54 changed files with 1360 additions and 3295 deletions

View file

@ -4,9 +4,19 @@ const path = require('path')
const fs = require('fs')
const inquirer = require('inquirer')
const validateNpmName = require('validate-npm-package-name')
const languages = require('@freesewing/i18n').languages;
const strings = require('@freesewing/i18n').strings;
const config = require('./config')
let languageChoices = []
for (let l of Object.keys(languages)) {
languageChoices.push({
name: languages[l],
value: l,
short: languages[l]
});
}
module.exports = async (opts) => {
if (opts.name && !validateNpmName(opts.name).validForNewPackages) {
throw new Error(`invalid package name "${opts.name}"`)
@ -27,11 +37,18 @@ module.exports = async (opts) => {
return opts
} else {
const info = await inquirer.prompt([
{
type: 'list',
name: 'language',
message: 'Language',
choices: languageChoices,
default: 'en'
},
{
type: 'input',
name: 'name',
message: 'Pattern Name',
validate: (name) => {
message: info => strings[info.language]['cfp.patternName'],
validate: name => {
return name && validateNpmName(name).validForNewPackages
},
default: opts.name
@ -39,63 +56,56 @@ module.exports = async (opts) => {
{
type: 'input',
name: 'description',
message: 'Pattern Description',
message: info => strings[info.language]['cfp.patternDescription'],
default: opts.description
},
{
type: 'list',
name: 'type',
message: info => strings[info.language]['cfp.patternType'],
choices: info => [
{ name: strings[info.language]['filter.type.pattern'], value: 'pattern'},
{ name: strings[info.language]['filter.type.block'], value: 'block'},
],
default: 'pattern',
},
{
type: 'list',
name: 'department',
message: info => strings[info.language]['filter.department.title'],
choices: info => [
{ name: strings[info.language]['filter.department.menswear'], value: 'menswear'},
{ name: strings[info.language]['filter.department.womenswear'], value: 'womenswear'},
{ name: strings[info.language]['filter.department.accessories'], value: 'accessories'},
],
default: 'womenswear',
},
{
type: 'input',
name: 'author',
message: 'Author\'s GitHub Handle',
message: info => strings[info.language]['cfp.author'],
default: opts.author
},
{
type: 'input',
name: 'repo',
message: 'GitHub Repo Path',
message: info => strings[info.language]['cfp.githubRepo'],
default: opts.repo
},
{
type: 'input',
name: 'license',
message: 'License',
default: opts.license
},
{
type: 'list',
name: 'manager',
message: 'Package Manager',
message: info => strings[info.language]['cfp.packageManager'],
choices: [ 'npm', 'yarn' ],
default: opts.manager
},
{
type: 'list',
name: 'template',
message: 'Development Mode',
choices: [ 'light', 'dark', 'custom' ],
default: opts.template
},
{
type: 'input',
name: 'templatePath',
message: 'Template Path',
default: opts.templatePath,
when: ({ template }) => template === 'custom',
validate: input => new Promise(resolve => {
const fullPath = path.resolve(process.cwd(), input)
fs.stat(fullPath, (err, stats) => {
if (err) {
return resolve(`Cannot resolve directory at: ${fullPath}`)
}
resolve(true)
})
})
}
])
config.set('author', info.author)
config.set('license', info.license)
config.set('manager', info.manager)
config.set('template', info.template)
config.set('template', 'default')
config.set('license', 'MIT')
info.template = 'default';
return {
...info,