1
0
Fork 0

Merge pull request #51 from zachwolf/template-path

Template path
This commit is contained in:
Travis Fischer 2018-08-14 11:30:07 -05:00 committed by Joost De Cock
parent 15b1b808df
commit 534eb109e9
5 changed files with 35 additions and 4 deletions

View file

@ -15,6 +15,7 @@ module.exports = async (info) => {
const {
manager,
template,
templatePath,
name
} = info
@ -26,7 +27,9 @@ module.exports = async (info) => {
info.dest = dest
await mkdirp(dest)
const source = path.join(__dirname, '..', 'template', template)
const source = template === 'custom'
? path.join(process.cwd(), templatePath)
: path.join(__dirname, '..', 'template', template)
const files = await globby(source, {
dot: true
})

View file

@ -52,6 +52,16 @@ const tests = [
license: 'GPL',
manager: 'yarn',
template: 'default'
},
{
name: 'my-custom-template',
author: 'nala',
description: 'this is a auto-generated test module. please ignore.',
repo: 'nala/my-custom-template',
license: 'GPL',
manager: 'yarn',
template: 'custom',
templatePath: './template/default'
}
]

View file

@ -21,7 +21,8 @@ module.exports = async () => {
.option('-l, --license <string>', 'package license', defaults.license)
.option('-r, --repo <string>', 'package repo path')
.option('-m, --manager <npm|yarn>', 'package manager to use', /^(npm|yarn)$/, defaults.manager)
.option('-t, --template <default|typescript>', 'package template to use', /^(default|typescript)$/, defaults.template)
.option('-t, --template <default|typescript>', 'package template to use', /^(default|typescript|custom)$/, defaults.template)
.option('-p, --template-path <string>', 'custom package template path')
.option('-s, --skip-prompts', 'skip all prompts (must provide package-name via cli)')
.parse(process.argv)

View file

@ -1,5 +1,7 @@
'use strict'
const path = require('path')
const fs = require('fs')
const inquirer = require('inquirer')
const validateNpmName = require('validate-npm-package-name')
@ -69,8 +71,23 @@ module.exports = async (opts) => {
type: 'list',
name: 'template',
message: 'Template',
choices: [ 'default', 'typescript' ],
choices: [ 'default', 'typescript', 'custom' ],
default: opts.template
},
{
type: 'input',
name: 'templatePath',
message: 'Template Path',
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)
})
})
}
])

View file

@ -41,7 +41,7 @@
"inquirer": "^6.0.0",
"make-dir": "^1.3.0",
"node-compat-require": "^1.0.5",
"ora": "^2.1.0",
"ora": "^3.0.0",
"p-each-series": "^1.0.0",
"parse-git-config": "^2.0.2",
"validate-npm-package-name": "^3.0.0",