Last active
September 23, 2016 11:34
-
-
Save iissnan/8535138c4caf7045795f31fc7535b409 to your computer and use it in GitHub Desktop.
SW Sass Processor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'), | |
os = require('os'), | |
path = require('path'), | |
Hapi = require('hapi'), | |
Promise = require('promise'), | |
lib = require('./lib.js'), | |
sassProcessor = require('./sass_processor.js'), | |
pseudoProcessor = require('./pseudo_processor') ; | |
require('./configurator.js')('./weblauncher.user.json', './weblauncher.json') | |
.catch(function(err){ | |
console.log('SOMETHING WRONG WITH CONFIGURATION'.red); | |
return Promise.reject(err); | |
}) | |
.then(function(args){ | |
run(args); | |
}) | |
.catch(function (err) { | |
console.log('ERROR OCCURRED'.red); | |
console.log(err.stack || err); | |
}); | |
function run(cfg) { | |
console.log('\nbackend:\n'.green, cfg.backend.host); | |
console.log('config:\n'.green, cfg, '\n'); | |
pseudoProcessor.run(cfg); | |
sassProcessor.run(cfg); | |
var pack = new Hapi.Pack(); | |
var server = pack.server(cfg.port, { | |
files: { | |
relativeTo: cfg.dirs.src | |
} | |
}); | |
var serverStatic = pack.server(cfg.sport, { | |
files: { | |
relativeTo: cfg.dirs.build | |
} | |
}); | |
require('./routes/proxy.js')([server, serverStatic], cfg); | |
// Devportal | |
require('./routes/desktop/dyn/devportal.js')([server, serverStatic], cfg); | |
// ServiceWeb | |
require('./routes/desktop/static/static.js')([serverStatic], cfg); | |
require('./routes/desktop/dyn/rclibx.js')([server], cfg); | |
require('./routes/desktop/dyn/desktop.js')([server], cfg); | |
require('./routes/desktop/dyn/assets.js')([server], cfg); | |
require('./routes/desktop/dyn/boot.js')([server], cfg); | |
require('./routes/desktop/common.js')([server, serverStatic], cfg); | |
// MobileWeb | |
require('./routes/mobile/dyn/boot.js')([server], cfg); | |
require('./routes/mobile/dyn/images.js')([server], cfg); | |
require('./routes/mobile/dyn/assets.js')([server], cfg); | |
pack.start(); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var path = require('path'), | |
exec = require('child_process').exec, | |
colors = require('colors'), | |
fs = require('fs'), | |
os = require('os'), | |
_ = require('lodash'); | |
var MODE_COMPILE = 'compile', | |
MODE_WATCH = 'watch'; | |
function _progress(msg) { | |
var i = 0; | |
return function tick() { | |
i = (i + 1) % 4; | |
var dots = new Array(i + 1).join('.'); | |
var stdout = process.stdout; | |
stdout.clearLine && stdout.clearLine(); //for running under IntelliJ IDEA | |
stdout.cursorTo && stdout.cursorTo(0); | |
stdout.write && stdout.write(msg + dots); | |
}; | |
} | |
function _getCmd(mode, builderDir, srcDir, force, lang) { | |
var cfgPath = path.join(builderDir, 'compass-config.rb'); | |
// Support old SASS configs | |
if (!fs.existsSync(cfgPath)) { | |
cfgPath = path.join(builderDir, 'sass_cfg', 'config-' + lang + '.rb'); | |
} | |
return _.template('compass <%= command %> -c <%= config %> --sass-dir=<%= sassDir %> --css-dir=<%= cssDir %> <%= force %>')({ | |
command: mode, | |
config: cfgPath, | |
sassDir: srcDir, | |
cssDir: srcDir, | |
force: force ? '--force' : '' | |
}); | |
} | |
function run(cfg) { | |
var mode = cfg.sassOnce ? MODE_COMPILE : MODE_WATCH; | |
var cmd = _getCmd(mode, cfg.dirs.builder, cfg.dirs.src, cfg.sassForce, cfg.language); | |
exec('compass clean', { cwd: __dirname }, function() { // todo: check it | |
console.log('EXECUTING SASS COMMAND:', cmd); | |
var child = exec(cmd, { | |
cwd: __dirname , | |
env: _.assign({SASS_LOCALE: cfg.language}, process.env) | |
}); | |
var msg = _.template('sass-processor (<%= mode %>) for language=<%= lang %> ')({ | |
lang: cfg.language, | |
mode: mode | |
}), | |
progressTick = _progress(msg); | |
child.stdout.on('data', function (data) { | |
progressTick(); | |
}); | |
child.on('exit', function (data) { | |
console.log(os.EOL + 'DONE: sass compile'); | |
}); | |
child.stderr.on('data', function (data) { // error or warning | |
console.log(os.EOL + data); | |
console.error('SOMETHING OCCURRED DURING SASS-COMPILE'.red); | |
}); | |
}); | |
} | |
exports.run = run; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment