-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathfliplet-create-widget.js
More file actions
executable file
·76 lines (63 loc) · 1.78 KB
/
fliplet-create-widget.js
File metadata and controls
executable file
·76 lines (63 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
const path = require('path');
const replace = require('replace');
const ncp = require('ncp').ncp;
ncp.limit = 16;
if (process.argv.length < 4) {
log('Component name and package is required');
process.exit();
}
const packageName = process.argv[2].trim().replace(/ /g, '-').toLowerCase();
const widgetName = process.argv[3];
const boilerplate = (process.argv[4] || '').replace('--', '');
const safeName = widgetName.trim().toLowerCase().replace(/ /g, '-').replace(/[^A-z0-9-]/g, '');
const folderPath = path.join(process.cwd(), safeName);
if (!/[A-z]{1,4}\.[A-z-]{3,16}\.[A-z]{3,64}/.test(packageName)) {
log(`Package name ${packageName} is invalid. Please make sure it follows the reverse domain name notation, e.g. "com.example.my-component"`);
process.exit();
}
let template;
switch (boilerplate) {
case 'vue':
template = 'widget-vue-template';
break;
case 'helper':
template = 'widget-helper-template';
break;
default:
template = 'widget-template';
}
log(`Creating new widget ${widgetName} to ${folderPath} using ${template} boilerplate`);
ncp(path.join(__dirname, template), folderPath, function(err) {
if (err) {
return console.error(err);
}
replace({
regex: '{{name}}',
replacement: widgetName,
paths: [folderPath],
recursive: true,
silent: true
});
replace({
regex: '{{safeName}}',
replacement: safeName,
paths: [folderPath],
recursive: true,
silent: true
});
replace({
regex: '{{package}}',
replacement: packageName,
paths: [folderPath],
recursive: true,
silent: true
});
log('Widget has been successfully created. To run it for development:');
log('');
log(' $ cd ' + safeName);
log(' $ fliplet run');
log('');
});
function log() {
console.log.apply(this, arguments);
}