Skip to content

Commit

Permalink
Merge pull request #4191 from rtibbles/unbundle_all_the_things
Browse files Browse the repository at this point in the history
Unbundle all the things
  • Loading branch information
rtibbles committed Aug 13, 2015
2 parents 93ab496 + e158aa0 commit 17ae1da
Show file tree
Hide file tree
Showing 594 changed files with 1,670 additions and 139,301 deletions.
8 changes: 8 additions & 0 deletions .jshintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
**/*.handlebars
**/*.less
**/*.css
kalite/distributed/static/js/distributed/base/backbone-tastypie.js
kalite/distributed/static/js/distributed/perseus/**/*
kalite/*/static/js/*/bundles/*
static-libraries/**
kalite/i18n/static/js/i18n
5 changes: 5 additions & 0 deletions .jshintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"sub": true,
"browserify": true,
"browser": true
}
61 changes: 0 additions & 61 deletions Gruntfile.js

This file was deleted.

120 changes: 92 additions & 28 deletions compile_javascript.js → build.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
var browserify = require('browserify');
var lessify = require('node-lessify');
var hbsfy = require("hbsfy")
var deamdify = require("deamdify");
var deamdify = require("./javascript_build/deamdify");
var fs = require("fs");
var _ = require("underscore");
var hintify = require("hintify");
var colors = require("colors");
var async = require("async");

var watch = false;
var debug = false;
Expand All @@ -20,28 +24,47 @@ if (process.argv.indexOf("--staticfiles") > -1 || process.argv.indexOf("-s") > -
staticfiles = true;
}

var log = function(msg) {
console.log("Watchify: " + msg);
var log = function(msg, color) {
console.log(color("Watchify: " + msg));
}

logging = {
warn: function(msg) {
log(msg, colors.yellow);
},

info: function(msg) {
log(msg, colors.green);
},

error: function(msg) {
log(msg, colors.red);
}
};

var format_jshint = function(error) {
return error.severity + ": in " + error.file + ", " + error.message + " line: " + error.line + " col: " + error.column;
}

var create_bundles = function (b, bundles) {
b.plugin('factor-bundle', { outputs: _.map(bundles, function(item) {return item.target_file;}) });

// Don't use minifyify except in production.
if (!debug) {
b.plugin('minifyify', {map: false});
}
try {
b.bundle(function(err, buf){
if (err) {
log(err);
logging.error(err);
} else {
fs.createWriteStream('kalite' + (staticfiles ? '' : '/distributed') + '/static/js/distributed/bundles/bundle_common.js').write(buf);
log(bundles.length + " Bundles written.");
logging.info(bundles.length + " Bundles written.");
}
});
}
catch (err) {
log(err);
logging.error(err);
}
}

Expand Down Expand Up @@ -71,7 +94,7 @@ fs.readdir("kalite", function(err, filenames) {
}
}

log("Found " + bundles.length + " bundle" + (bundles.length !== 1 ? "s" : "") + ", compiling.");
logging.info("Found " + bundles.length + " bundle" + (bundles.length !== 1 ? "s" : "") + ", compiling.");

if (!fs.existsSync('kalite' + (staticfiles ? '' : '/distributed') + '/static/js/distributed/bundles/')) {
fs.mkdirSync('kalite' + (staticfiles ? '' : '/distributed') + '/static/js/distributed/bundles/');
Expand All @@ -90,45 +113,86 @@ fs.readdir("kalite", function(err, filenames) {

var kalite_utils_dir = "kalite/distributed/static/js/distributed/perseus/ke/utils";

var util_files = fs.readdirSync(kalite_utils_dir);
if (!fs.existsSync(kalite_utils_dir + "/../backuputils")) {

util_files = _.map(util_files, function(file_name){
return {
target_file: "kalite" + (staticfiles ? '' : '/distributed') + "/static/js/distributed/perseus/ke/utils" + "/" + file_name,
bundle: kalite_utils_dir + "/" + file_name,
alias: "khan_utils_" + file_name.split(".").slice(0,-1).join(".")
};});
// Assume if the backup exists then we don't need to do this

_.each(util_files, function(item) {
var brow = browserify(item.bundle);
brow.transform(deamdify);
brow.bundle().pipe(fs.createWriteStream(item.target_file));
log("Writing " + item.alias);
});
logging.warn("DeAMDifying Khan Exercise Util Files");

var util_files = fs.readdirSync(kalite_utils_dir);

if (!staticfiles) {

fs.mkdirSync(kalite_utils_dir + "/../backuputils");

}

util_files = _.map(util_files, function(file_name){
return {
target_file: "kalite" + (staticfiles ? '' : '/distributed') + "/static/js/distributed/perseus/ke/utils" + "/" + file_name,
bundle: kalite_utils_dir + "/" + file_name,
alias: "khan_utils_" + file_name.split(".").slice(0,-1).join("."),
backup_file: kalite_utils_dir + "/../backuputils/" + file_name
};});

var redefine = function(err) {
if (!err) {
async.each(util_files, function(item, callback) {
var brow = browserify(staticfiles ? item.bundle : item.backup_file);
brow.transform(deamdify);
brow.plugin('minifyify', {map: false});
var out = brow.bundle()
out.pipe(fs.createWriteStream(item.target_file));
logging.info("Writing " + item.alias);
out.on('end', callback);
});
} else {
logging.error(err);
}
}

if (!staticfiles) {
async.each(util_files, function(item, callback) {
var out = fs.createReadStream(item.bundle)
out.pipe(fs.createWriteStream(item.backup_file));
out.on('end', callback);
}, redefine);
} else {
redefine();
}

} else {
logging.warn("Assuming that Khan Util files are already deAMDified");
}


_.each(bundles, function(item) {b.add(item.bundle, {expose: item.alias});})

// Run jshint first to avoid unnecessary errors due to Syntax.
b.transform(hintify);
b.transform(hbsfy);

b.transform(deamdify);
b.transform(lessify, {global: true});

if (watch) {
var watchify = require("watchify");
b = watchify(b, {
verbose: true
});
log("Starting watcher");
logging.info("Starting watcher");
b.on('update', function (ids) {
log('files changed, bundle updated');
_.each(ids, function(id) {log(id + " changed");});
logging.info('files changed, bundle updated');
_.each(ids, function(id) {logging.info(id + " changed");});
create_bundles(b, bundles);
});
b.on('log', log);
b.on('error', function(error) {
log(error);
this.emit("end");
});
}

b.on('log', logging.info);
b.on('error', function(error) {
logging.error(error);
this.emit("end");
});

create_bundles(b, bundles);
});
6 changes: 3 additions & 3 deletions circle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ dependencies:
- pip install -r requirements_test.txt
- pip install -e .
- npm install
- npm install -g grunt-cli
- npm install -g jshint

test:
override:
- kalite start --traceback -v2
- kalite status
- kalite stop --traceback -v2
- node compile_javascript.js --staticfiles
- node build.js --staticfiles
- case $CIRCLE_NODE_INDEX in 0) kalite manage test --bdd-only ;; 1) kalite manage test --no-bdd;; esac:
parallel: true
- grunt jshint
- jshint kalite/*/static/js/*/

0 comments on commit 17ae1da

Please sign in to comment.