mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-04-13 03:20:59 +00:00
83 lines
1.9 KiB
JavaScript
83 lines
1.9 KiB
JavaScript
var path = require('path');
|
|
var fs = require('fs');
|
|
var Mustache = require('mustache');
|
|
|
|
var TEMPLATES = path.join(__dirname, '..', '..', 'template');
|
|
|
|
var files = [
|
|
{
|
|
name: 'index.js',
|
|
template: 'component.mst'
|
|
},
|
|
{
|
|
name: 'style.scss',
|
|
template: 'style.mst'
|
|
},
|
|
{
|
|
name: 'README.md',
|
|
template: 'README.mst'
|
|
}
|
|
];
|
|
|
|
|
|
// =============================================================================
|
|
// Helper methods
|
|
// =============================================================================
|
|
|
|
function slugify(text) {
|
|
return text.toString().split(/(?=[A-Z])/).join('-').toLowerCase().trim()
|
|
.replace(/\s+/g, '-') // Replace spaces with -
|
|
.replace(/&/g, '-and-') // Replace & with 'and'
|
|
.replace(/[^\w\-]+/g, '') // Remove all non-word chars
|
|
.replace(/\-\-+/g, '-'); // Replace multiple - with single -
|
|
}
|
|
|
|
|
|
function write(name, data) {
|
|
fs.writeFile(name, data, function(err) {
|
|
if (err) {
|
|
return console.log('[ error ] ' + err);
|
|
}
|
|
console.log('[ created ] ' + name);
|
|
});
|
|
}
|
|
|
|
|
|
// =============================================================================
|
|
// Write files!
|
|
// =============================================================================
|
|
function run(argv) {
|
|
var name = argv.name;
|
|
var slug = slugify(name);
|
|
var directory = path.join(argv.dir, slug);
|
|
|
|
if (!fs.existsSync(directory)) {
|
|
fs.mkdirSync(directory);
|
|
} else {
|
|
console.warn('[ error ] ' + directory + ' already exists');
|
|
return;
|
|
}
|
|
|
|
files.forEach(function(file) {
|
|
var template = fs.readFileSync(path.join(TEMPLATES, file.template), 'utf8');
|
|
var newPath = path.join(directory, file.name);
|
|
var context = {
|
|
name: name,
|
|
slug: slug
|
|
};
|
|
|
|
write(newPath, Mustache.render(template, context));
|
|
});
|
|
}
|
|
|
|
|
|
function build(cli) {
|
|
return cli
|
|
.option('dir', {
|
|
default: process.env.PWD
|
|
});
|
|
}
|
|
|
|
|
|
exports.handler = run;
|
|
exports.builder = build;
|