UNPKG

course-renderer

Version:

Manages CA School Courses file system storage and HTML conversion

81 lines (80 loc) 2.51 kB
#!/usr/bin/env node "use strict"; 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`); }