| '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); |