Skip to content

Commit c55fb09

Browse files
authored
Merge pull request #382 from developit/inject-values
Inject values into extracted Template files
2 parents 81c7bb2 + 5dafe34 commit c55fb09

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

src/commands/create.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -95,23 +95,43 @@ export default asyncCommand({
9595

9696
// Extract files from `archive` to `target`
9797
// TODO: read & respond to meta/hooks
98-
let hasDir = false;
98+
let keeps=[];
9999
await gittar.extract(archive, target, {
100100
strip: 2,
101-
filter(path) {
102-
return path.includes('/template/') && (hasDir = true);
101+
filter(path, obj) {
102+
if (path.includes('/template/')) {
103+
obj.on('end', () => obj.type==='File' && keeps.push(obj.absolute));
104+
return true;
105+
}
103106
}
104107
});
105108

106-
if (!hasDir) {
109+
if (keeps.length) {
110+
// eslint-disable-next-line
111+
let dict = new Map();
112+
// TODO: concat author-driven patterns
113+
['name'].forEach(str => {
114+
// if value is defined
115+
if (argv[str] !== void 0) {
116+
dict.set(new RegExp(`{{\\s?${str}\\s}}`, 'g'), argv[str]);
117+
}
118+
});
119+
// Update each file's contents
120+
for (let entry of keeps) {
121+
let buf = await fs.readFile(entry, 'utf8');
122+
dict.forEach((v, k) => {
123+
buf = buf.replace(k, v);
124+
});
125+
await fs.writeFile(entry, buf);
126+
}
127+
} else {
107128
return error(`No \`template\` directory found within ${ repo }!`, 1);
108129
}
109130

110131
spinner.text = 'Parsing `package.json` file';
111132

112133
// Validate user's `package.json` file
113-
let pkgData;
114-
let pkgFile = resolve(target, 'package.json');
134+
let pkgData, pkgFile=resolve(target, 'package.json');
115135

116136
if (pkgFile) {
117137
pkgData = JSON.parse(await fs.readFile(pkgFile));

0 commit comments

Comments
 (0)