scripts/makeLesson.js (46 lines of code) (raw):
const fs = require('fs');
const sh = require('shelljs');
const _ = require('lodash');
const {
isUpperCase,
fileExists,
dirExists,
ensureDir,
fileNameFromPath,
stripFileExtension,
} = require('./utils');
const lessonsDirPath = `${__dirname}/../docs/src/lessons`;
const lessonTemplatePath = `${__dirname}/../docs/src/templates/Lesson.js.template`;
const exampleTemplatePath = `${__dirname}/../docs/src/templates/ComponentExample.js.template`;
if (process.argv.length <= 2) {
console.log(`Usage: ${__filename} LESSON_NAME`);
process.exit(-1);
}
const lessonName = process.argv[2];
console.log(lessonName);
const componentName = lessonName
.split(' ')
.map(_.capitalize)
.join('');
console.log('componentName', componentName);
const lessonDirPath = `${lessonsDirPath}/${componentName}`;
const lessonComponentPath = `${lessonDirPath}/${componentName}Lesson.js`;
ensureDir(lessonsDirPath);
ensureDir(lessonDirPath);
if (!fileExists(lessonComponentPath)) {
// use template file to generate a stub example page for this component
const lessonTemplate = _.template(sh.cat(lessonTemplatePath).toString());
const lessonStub = lessonTemplate({ name: lessonName, componentName });
fs.writeFile(lessonComponentPath, lessonStub, err => {
if (err) throw err;
console.log('created stub lesson component:', lessonComponentPath);
});
const examplesDirPath = `${lessonDirPath}/examples`;
const examplePath = `${examplesDirPath}/${componentName}.js.example`;
// use template to generate stub example file, to be used for live preview (using component-playground)
const exampleTemplate = _.template(sh.cat(exampleTemplatePath).toString());
const exampleStub = exampleTemplate({ componentName });
ensureDir(examplesDirPath);
fs.writeFile(examplePath, exampleStub, err => {
if (err) throw err;
console.log('created stub example:', examplePath);
});
}