blob: 5cf7733eb43b56c5c6868b60de3f07af5a0d3eb0 [file] [log] [blame]
'use strict';
const root = __dirname + '/../';
const target = root + 'dist/debug/css/index.css';
const fs = require('fs');
const async = require('async');
const less = require('less');
let settings;
if (fs.existsSync(root + 'settings.json')) {
settings = require(root + 'settings.json');
} else if (fs.existsSync(root + 'settings.json.default.json')) {
settings = require(root + 'settings.json.default.json');
} else {
throw new Error('no settings.json or settings.json.default found');
}
const srcAndTarget = settings.deps.map(addonName => {
addonName = addonName.name;
return 'app/addons/' + addonName + '/assets/less/' + addonName + '.less';
});
const paths = settings.deps.map(addonName => {
addonName = addonName.name;
return 'app/addons/' + addonName + '/assets/less/';
});
srcAndTarget.unshift('assets/less/fauxton.less');
paths.unshift('assets/less');
// --- end setup ---
const options = {
paths: paths
};
const parser = new less.Parser(options);
function writeCSS (files) {
function concatCSS (src, cb) {
fs.readFile(root + src, 'utf8', (err, data) => {
if (err) {
return cb(null, []);
}
parser.parse(data, (err, tree) => {
if (err) {
throw err;
}
return cb(null, [tree.toCSS()]);
});
});
};
async.concatSeries(files, concatCSS, (err, data) => {
fs.writeFile(target, data.join('\n'), (err) => {
if (err) {
throw err;
}
process.exit(0);
});
});
}
writeCSS(srcAndTarget);