From 534eb109e9364d972b0c4cf3e49a2a021f534e1f Mon Sep 17 00:00:00 2001 From: Travis Fischer Date: Tue, 14 Aug 2018 11:30:07 -0500 Subject: [PATCH] Merge pull request #51 from zachwolf/template-path Template path --- .../lib/create-library.js | 5 ++++- .../lib/create-library.test.js | 10 ++++++++++ .../create-freesewing-pattern/lib/index.js | 3 ++- .../lib/prompt-library-params.js | 19 ++++++++++++++++++- .../create-freesewing-pattern/package.json | 2 +- 5 files changed, 35 insertions(+), 4 deletions(-) diff --git a/packages/create-freesewing-pattern/lib/create-library.js b/packages/create-freesewing-pattern/lib/create-library.js index acbbd105267..3cf7ef179d1 100644 --- a/packages/create-freesewing-pattern/lib/create-library.js +++ b/packages/create-freesewing-pattern/lib/create-library.js @@ -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 }) diff --git a/packages/create-freesewing-pattern/lib/create-library.test.js b/packages/create-freesewing-pattern/lib/create-library.test.js index bcc733d6362..1456e123289 100644 --- a/packages/create-freesewing-pattern/lib/create-library.test.js +++ b/packages/create-freesewing-pattern/lib/create-library.test.js @@ -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' } ] diff --git a/packages/create-freesewing-pattern/lib/index.js b/packages/create-freesewing-pattern/lib/index.js index 20636df8191..a47eef3b5f4 100644 --- a/packages/create-freesewing-pattern/lib/index.js +++ b/packages/create-freesewing-pattern/lib/index.js @@ -21,7 +21,8 @@ module.exports = async () => { .option('-l, --license ', 'package license', defaults.license) .option('-r, --repo ', 'package repo path') .option('-m, --manager ', 'package manager to use', /^(npm|yarn)$/, defaults.manager) - .option('-t, --template ', 'package template to use', /^(default|typescript)$/, defaults.template) + .option('-t, --template ', 'package template to use', /^(default|typescript|custom)$/, defaults.template) + .option('-p, --template-path ', 'custom package template path') .option('-s, --skip-prompts', 'skip all prompts (must provide package-name via cli)') .parse(process.argv) diff --git a/packages/create-freesewing-pattern/lib/prompt-library-params.js b/packages/create-freesewing-pattern/lib/prompt-library-params.js index 26a42270960..06b3f2ae5dc 100644 --- a/packages/create-freesewing-pattern/lib/prompt-library-params.js +++ b/packages/create-freesewing-pattern/lib/prompt-library-params.js @@ -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) + }) + }) } ]) diff --git a/packages/create-freesewing-pattern/package.json b/packages/create-freesewing-pattern/package.json index cbef0d29575..f774c907553 100644 --- a/packages/create-freesewing-pattern/package.json +++ b/packages/create-freesewing-pattern/package.json @@ -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",