Files
infoscreen3/modules/bundleManager.js
T

59 lines
1.5 KiB
JavaScript

"use strict";
const bundle = require('./bundle.js');
let fs = require("fs");
let cli = require("./cli.js");
/**
* @module infoscreen3/bundleManager
*/
class bundleManager {
constructor() {
this.bundles = {};
let dirs = getDirectories("./data");
for (let name of dirs) {
let data = getJson("./data/" + name + "/bundle.json");
let slides = getJson("./data/" + name + "/slides.json");
this.bundles[name] = new bundle(name, data, slides);
}
}
/**
*
* @param {string} name
* @returns {bundle}
*/
getBundle(name) {
if (this.bundles.hasOwnProperty(name)) {
return this.bundles[name];
} else {
try {
cli.info(name + " not in bundles, trygin to load from fs...");
let data = getJson("./data/" + name + "/bundle.json");
let slides = getJson("./data/" + name + "/slides.json");
this.bundles[name] = new bundle(name, data, slides);
cli.success(name + " load");
return this.bundles[name];
} catch (err) {
cli.error("bundle by name "+ name +" not found on filesystem", err);
}
}
}
}
function getDirectories(path) {
return fs.readdirSync(path).filter(function (file) {
return fs.statSync(path + '/' + file).isDirectory();
});
}
function getJson(file) {
return JSON.parse(fs.readFileSync(file).toString());
}
module.exports = bundleManager;