1
0
Fork 0

🚧 Debugging issue in CFP

This commit is contained in:
Joost De Cock 2019-05-09 15:50:59 +02:00
parent 550b440fee
commit 5b09b9c7d2

View file

@ -1,109 +1,95 @@
'use strict' "use strict";
const handlebars = require('handlebars') const handlebars = require("handlebars");
const execa = require('execa') const execa = require("execa");
const fs = require('fs') const fs = require("fs");
const globby = require('globby') const globby = require("globby");
const mkdirp = require('make-dir') const mkdirp = require("make-dir");
const ora = require('ora') const ora = require("ora");
const path = require('path') const path = require("path");
const pEachSeries = require('p-each-series') const pEachSeries = require("p-each-series");
const pkg = require('../package') const pkg = require("../package");
const templateBlacklist = new Set([ const templateBlacklist = new Set(["example/public/favicon.ico"]);
'example/public/favicon.ico'
])
module.exports = async (info) => { module.exports = async info => {
const { const { manager, template, name, templatePath, git } = info;
manager,
template,
name,
templatePath,
git
} = info
// handle scoped package names // handle scoped package names
const parts = name.split('/') const parts = name.split("/");
info.shortName = parts[parts.length - 1] info.shortName = parts[parts.length - 1];
const dest = path.join(process.cwd(), info.shortName) const dest = path.join(process.cwd(), info.shortName);
info.dest = dest info.dest = dest;
await mkdirp(dest) await mkdirp(dest);
const source = template === 'custom' const source =
template === "custom"
? path.join(process.cwd(), templatePath) ? path.join(process.cwd(), templatePath)
: path.join(__dirname, '..', 'template', template) : path.join(__dirname, "..", "template", template);
const files = await globby(source, { const files = await globby(source, {
dot: true dot: true
}) });
{ {
const promise = pEachSeries(files, async (file) => { const promise = pEachSeries(files, async file => {
return module.exports.copyTemplateFile({ return module.exports.copyTemplateFile({
file, file,
source, source,
dest, dest,
info info
}) });
}) });
ora.promise(promise, `Copying ${template} template to ${dest}`) ora.promise(promise, `Copying ${template} template to ${dest}`);
await promise await promise;
} }
{ {
const promise = module.exports.initPackageManager({ dest, info }) const promise = module.exports.initPackageManager({ dest, info });
ora.promise(promise, `Running ${manager} install and ${manager} link`) ora.promise(promise, `Running ${manager} install and ${manager} link`);
await promise await promise;
} }
if (git) { if (git) {
const promise = module.exports.initGitRepo({ dest }) const promise = module.exports.initGitRepo({ dest });
ora.promise(promise, 'Initializing git repo') ora.promise(promise, "Initializing git repo");
await promise await promise;
} }
return dest return dest;
} };
module.exports.copyTemplateFile = async (opts) => { module.exports.copyTemplateFile = async opts => {
const { const { file, source, dest, info } = opts;
file,
source,
dest,
info
} = opts
const fileRelativePath = path.relative(source, file) const fileRelativePath = path.relative(source, file);
const destFilePath = path.join(dest, fileRelativePath) const destFilePath = path.join(dest, fileRelativePath);
const destFileDir = path.parse(destFilePath).dir const destFileDir = path.parse(destFilePath).dir;
await mkdirp(destFileDir) await mkdirp(destFileDir);
if (templateBlacklist.has(fileRelativePath)) { if (templateBlacklist.has(fileRelativePath)) {
const content = fs.readFileSync(file) const content = fs.readFileSync(file);
fs.writeFileSync(destFilePath, content) fs.writeFileSync(destFilePath, content);
} else { } else {
const template = handlebars.compile(fs.readFileSync(file, 'utf8')) console.log("loading", file);
const template = handlebars.compile(fs.readFileSync(file, "utf8"));
const content = template({ const content = template({
...info, ...info,
yarn: (info.manager === 'yarn') yarn: info.manager === "yarn"
}) });
fs.writeFileSync(destFilePath, content, 'utf8') fs.writeFileSync(destFilePath, content, "utf8");
} }
return fileRelativePath return fileRelativePath;
} };
module.exports.initPackageManager = async (opts) => { module.exports.initPackageManager = async opts => {
const { const { dest, info } = opts;
dest,
info
} = opts
const example = path.join(dest, 'example') const example = path.join(dest, "example");
const commands = [ const commands = [
{ {
@ -118,20 +104,20 @@ module.exports.initPackageManager = async (opts) => {
cmd: `${info.manager} install`, cmd: `${info.manager} install`,
cwd: example cwd: example
} }
] ];
return pEachSeries(commands, async ({ cmd, cwd }) => { return pEachSeries(commands, async ({ cmd, cwd }) => {
return execa.shell(cmd, { cwd }) return execa.shell(cmd, { cwd });
}) });
} };
module.exports.initGitRepo = async (opts) => { module.exports.initGitRepo = async opts => {
const { const { dest } = opts;
dest
} = opts
const gitIgnorePath = path.join(dest, '.gitignore') const gitIgnorePath = path.join(dest, ".gitignore");
fs.writeFileSync(gitIgnorePath, ` fs.writeFileSync(
gitIgnorePath,
`
# See https://help.github.com/ignore-files/ for more about ignoring files. # See https://help.github.com/ignore-files/ for more about ignoring files.
# dependencies # dependencies
@ -153,8 +139,12 @@ dist
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
`, 'utf8') `,
"utf8"
);
const cmd = `git init && git add . && git commit -m ":tada: Initialized ${pkg.name}@${pkg.version} with create-freesewing-pattern"` const cmd = `git init && git add . && git commit -m ":tada: Initialized ${
return execa.shell(cmd, { cwd: dest }) pkg.name
} }@${pkg.version} with create-freesewing-pattern"`;
return execa.shell(cmd, { cwd: dest });
};