diff --git a/Brocfile.js b/Brocfile.js
index 0c0b594e3d..a3e7bd5bc9 100644
--- a/Brocfile.js
+++ b/Brocfile.js
@@ -1,130 +1,102 @@
+/* jshint node: true */
+
+var flatten = require('lodash/array/flatten');
+var isUndefined = require('lodash/lang/isUndefined');
+var path = require('path');
+var parseArgs = require('minimist');
var mergeTrees = require('broccoli-merge-trees');
var uglifyFiles = require('broccoli-uglify-sourcemap');
var concatFiles = require('broccoli-sourcemap-concat');
-var pickFiles = require('broccoli-static-compiler');
-var findBowerTrees = require('broccoli-bower');
var compileLess = require('broccoli-less-single');
+var gzip = require('broccoli-gzip');
+var debug = require('broccoli-stew').debug;
-var vendorMin = concatFiles('awx/ui/static/lib', {
- sourceMapConfig: {
- enabled: false
- },
- outputFile: '/out/vendor-min.js',
- inputFiles: [
- 'jquery/dist/jquery.min.js',
- 'angular/angular.min.js',
- 'angular-route/angular-route.min.js',
- 'angular-resource/angular-resource.min.js',
- 'angular-cookies/angular-cookies.min.js',
- 'angular-sanitize/angular-sanitize.min.js',
- 'angular-md5/angular-md5.min.js',
- 'jquery-ui/jquery-ui.min.js',
- 'bootstrap/dist/js/bootstrap.min.js',
- 'js-yaml/dist/js-yaml.min.js',
- 'select2/select2.min.js',
- 'angular-animate/angular-animate.min.js',
- 'angular-tz-extensions/packages/jstimezonedetect/jstz.min.js',
- 'socket.io-client/dist/socket.io.min.js',
- 'd3js/build/d3.v3.min.js',
- 'novus-nvd3/nv.d3.min.js'
- ]
-});
+// Get extra args after '--'
+var allArgs = parseArgs(process.argv.slice(2), { '--': true });
+var args = parseArgs(allArgs['--']);
-var sourceMaps = pickFiles('awx/ui/static/lib', {
- srcDir: '/',
- destDir: 'out',
- files: [
- 'angular-animate/angular-animate.min.js.map',
- '**/*.min.js.map',
- '**/*.min.map'
- ]
-});
+var shouldCompress = isUndefined(args.compress) ? false : args.compress;
+var debugMode = isUndefined(args.debug) ? false : args.debug;
+var silentMode = isUndefined(args.silent) ? false : args.silent;
-var vendorMaps = concatFiles(sourceMaps, {
- sourceMapConfig: {
- enabled: false
- },
- outputFile: '/out/vendor-min.js.map',
- inputFiles: ['out/**/*.map']
-});
+var vendorFiles =
+ [ 'jquery/dist/jquery.js',
+ 'angular/angular.js',
+ 'angular-route/angular-route.js',
+ 'angular-resource/angular-resource.js',
+ 'angular-cookies/angular-cookies.js',
+ 'angular-sanitize/angular-sanitize.js',
+ 'angular-md5/angular-md5.js',
+ 'jquery-ui/jquery-ui.js',
+ 'bootstrap/dist/js/bootstrap.js',
+ 'js-yaml/dist/js-yaml.js',
+ 'select2/select2.js',
+ 'angular-animate/angular-animate.js',
+ 'angular-tz-extensions/packages/jstimezonedetect/jstz.js',
+ 'socket.io-client/dist/socket.io.js',
+ 'd3js/build/d3.v3.js',
+ 'novus-nvd3/nv.d3.js',
+ 'angular-codemirror/lib/AngularCodeMirror.js',
+ 'timezone-js/src/date.js',
+ 'underscore/underscore.js',
+ 'rrule/lib/rrule.js',
+ 'rrule/lib/nlp.js',
+ 'angular-tz-extensions/lib/angular-tz-extensions.js',
+ 'angular-scheduler/lib/angular-scheduler.js',
+ 'angular-filters/dist/angular-filters.js',
+ 'bootstrap/dist/js/bootstrap.js',
+ 'codemirror/lib/codemirror.js',
+ 'd3Donut/d3Donut.js',
+ 'jPushMenu/jPushMenu.js',
+ 'jQuery.dotdotdot/src/js/jquery.dotdotdot.js',
+ 'jquery-ui/jquery-ui.js',
+ 'js-yaml/dist/js-yaml.js',
+ 'lrInfiniteScroll/lrInfiniteScroll.js',
+ 'scrollto/lib/jquery-scrollto.js',
+ 'select2/select2.js',
+ 'sizzle/dist/sizzle.js',
+ 'ansible/*.js'
+ ];
-var vendorMinWithMaps = mergeTrees([vendorMin, vendorMaps]);
+function log() {
+ var msgs = Array.prototype.splice.apply(arguments);
-var vendorConcat = concatFiles('awx/ui/static/lib', {
- outputFile: 'out/vendor-concat.js',
- inputFiles: [
- 'angular-codemirror/lib/AngularCodeMirror.js',
- 'timezone-js/src/date.js',
- 'underscore/underscore.js',
- 'rrule/lib/rrule.js',
- 'rrule/lib/nlp.js',
- 'angular-tz-extensions/lib/angular-tz-extensions.js',
- 'angular-scheduler/lib/angular-scheduler.js',
- 'angular-filters/dist/angular-filters.js',
- 'bootstrap/dist/js/bootstrap.js',
- 'codemirror/lib/codemirror.js',
- 'd3Donut/d3Donut.js',
- 'jPushMenu/jPushMenu.js',
- 'jQuery.dotdotdot/src/js/jquery.dotdotdot.js',
- 'jquery-ui/jquery-ui.js',
- 'js-yaml/dist/js-yaml.js',
- 'lrInfiniteScroll/lrInfiniteScroll.js',
- 'scrollto/lib/jquery-scrollto.js',
- 'select2/select2.js',
- 'sizzle/dist/sizzle.js',
- ]
-});
-
-function uglifyFast(tree, opts) {
- opts = opts || {};
- opts.compress = false;
- opts.mangle = false;
- opts.sourceMapIncludeSources = false;
- return uglifyFiles(tree, opts);
+ if (!silentMode) {
+ console.log.apply(null, msgs);
+ }
}
-function uglifySlow(tree) {
- return uglifyFiles(tree);
+function prependLibDir(file) {
+ return path.join('lib', file);
}
-var ansibleLib = pickFiles('awx/ui/static/lib/ansible', {
- srcDir: '/',
- destDir: 'out'
-});
+vendorFiles = vendorFiles.map(prependLibDir);
-var src = pickFiles('awx/ui/static/js', {
- srcDir: '/',
- destDir: 'out'
-});
+var root = 'awx/ui/static';
+var app = root;
-var filesToConcat = mergeTrees([vendorConcat, ansibleLib, src]);
+function log(msg, obj) {
+ console.log(msg + ":", obj);
+ return obj;
+}
-console.log('here1');
-var concated = concatFiles(filesToConcat, {
- outputFile: '/out/tower-concat.js',
- inputFiles: ['out/**/*.js']
-});
-var merged = mergeTrees([vendorMinWithMaps, concated], {
- description: "TreeMerge (vendor and sourcemaps)",
-})
-var minified = uglifyFast(merged, {
- outSourceMap: 'tower-concat.map'
-});
+app = concatFiles(app,
+ { outputFile: 'tower.concat.js',
+ inputFiles: flatten([vendorFiles, ['js/**/*.js', 'js/app.js', 'js/config.js', 'js/local_config.js']])
+ });
-var finalMap = pickFiles(minified, {
- srcDir: '/out',
- destDir: '',
- files: ['tower-concat.map']
-});
+app = debug(app, {name: 'concat'});
-var finalized = concatFiles(minified, {
- sourceMapConfig: {
- enabled: false
- },
- outputFile: '/tower-concat.js',
- inputFiles: ['out/vendor-min.js', 'out/tower-concat.js']
-});
+var styles = compileLess(path.join(root, 'less'), 'ansible-ui.less', 'tower.min.css');
-var less = compileLess('awx/ui/static/less', 'ansible-ui.less', 'awx.min.css');
+app = mergeTrees([app, styles]);
-module.exports = mergeTrees([finalMap, finalized, less]);
+if (shouldCompress) {
+ app = uglifyFiles(app);
+ app = gzip(app,
+ { keepUncompressed: true,
+ extensions: ['js', 'css']
+ });
+}
+
+module.exports = app;
diff --git a/awx/ui/templates/ui/index.html b/awx/ui/templates/ui/index.html
index 4273c6cf22..eb42d5303d 100644
--- a/awx/ui/templates/ui/index.html
+++ b/awx/ui/templates/ui/index.html
@@ -15,14 +15,14 @@
-
+
-
+