course-renderer
Version:
Manages CA School Courses file system storage and HTML conversion
81 lines (80 loc) • 2.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const CourseRenderer = require("../course-renderer");
const fs = require("fs-extra");
const path = require("path");
const async = require("async");
const argv = require('yargs')
.usage('Usage: $0 [options]')
.command('render-course', 'Renders a course or all courses from a directory')
.example('$0 --source source --dest dest course1')
.option('raw', {
alias: 'r',
describe: 'Path to the directory where all course raw are stored. Default to /tmp/courses-raw'
})
.option('dest', {
alias: 'd',
describe: 'Path to the directory where all rendered course are stored. Default to /tmp/courses-rendered'
})
.option('content-only', {
alias: 'c',
describe: 'Only process the course content directory only.'
})
.option('silent', {
alias: 's',
describe: 'Makes the render-course to not emit any message on the standard output'
})
.default({ 'raw': '/tmp/courses-raw', 'dest': '/tmp/courses-rendered' })
.boolean(['silent', 'content-only'])
.help()
.argv;
let courses = argv._;
if (!argv.s)
console.log('Rendering courses');
let source = argv.raw;
let dest = argv.dest;
// make source and dest absolute
if (!path.isAbsolute(source))
source = path.resolve(__dirname, source);
if (!path.isAbsolute(dest))
dest = path.resolve(__dirname, dest);
if (courses.length == 0) {
fs.readdir(source, (err, courses) => {
if (err) {
console.error(`Error: ${err.message}`);
process.exit(1);
}
async.map(courses, renderCourse, renderCourseCB);
});
}
else {
const resolveCourses = courses.map((course) => {
return path.resolve(source, course);
});
async.map(resolveCourses, fs.stat, (err, results) => {
if (err) {
console.error(`Error: ${err.message}`);
process.exit(1);
}
async.map(courses, renderCourse, renderCourseCB);
});
}
function renderCourse(course, callback) {
if (!argv.s)
console.log(`Rendering course ${course}`);
if (argv.c) {
CourseRenderer.renderCourseContent(source, dest, course, argv.s, callback);
}
else {
CourseRenderer.render(source, dest, course, argv.s, callback);
}
}
function renderCourseCB(error) {
if (error) {
console.error(`Error: ${error}`);
process.exit(1);
}
if (!argv.s)
console.log(`Done rendering course`);
}