Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Organize gulp #588

Merged
merged 31 commits into from
Dec 1, 2015
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/directives/badges/badge-tooltip.spec.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/* jshint -W117, -W030 */
describe('Badge Tooltiop Directive', function() {
describe('Badge Tooltip Directive', function() {
var scope;
var element;
var badge = mockData.getMockBadge();
1 change: 0 additions & 1 deletion app/index.jade
Original file line number Diff line number Diff line change
@@ -16,7 +16,6 @@ html
link(rel='stylesheet', href='../bower_components/angular-dropdowns/dist/angular-dropdowns.css')
link(rel='stylesheet', href='../bower_components/intro.js/introjs.css')
link(rel='stylesheet', href='../bower_components/angularjs-toaster/toaster.css')
link(rel='stylesheet', href='../bower_components/devicon/devicon.min.css')
link(rel='stylesheet', href='../bower_components/fontawesome/css/font-awesome.css')
link(rel='stylesheet', href='../bower_components/ng-notifications-bar/dist/ngNotificationsBar.min.css')
link(rel='stylesheet', href='../bower_components/ngDialog/css/ngDialog.css')
20 changes: 10 additions & 10 deletions app/specs.html
Original file line number Diff line number Diff line change
@@ -51,6 +51,7 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="../bower_components/angucomplete-alt/angucomplete-alt.js"></script>
<script src="../bower_components/angular-cookies/angular-cookies.js"></script>
<script src="../bower_components/angular-dropdowns/dist/angular-dropdowns.js"></script>
<script src="../bower_components/angular-ellipsis/src/angular-ellipsis.js"></script>
<script src="../bower_components/angular-filter/dist/angular-filter.min.js"></script>
<script src="../bower_components/angular-img-fallback/angular.dcb-img-fallback.js"></script>
<script src="../bower_components/intro.js/intro.js"></script>
@@ -167,6 +168,7 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="/app/filters/truncate.filter.js"></script>
<script src="/app/filters/track.filter.js"></script>
<script src="/app/filters/time-diff.filter.js"></script>
<script src="/app/filters/ternary.filter.js"></script>
<script src="/app/filters/role.filter.js"></script>
<script src="/app/filters/rating-color.filter.js"></script>
<script src="/app/filters/percentage.filter.js"></script>
@@ -175,7 +177,6 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="/app/filters/location.filter.js"></script>
<script src="/app/filters/local-time.filter.js"></script>
<script src="/app/filters/listRoles.filter.js"></script>
<script src="/app/filters/iif.filter.js"></script>
<script src="/app/filters/external-link-color.filter.js"></script>
<script src="/app/filters/empty.filter.js"></script>
<script src="/app/filters/deadline-msg.filter.js"></script>
@@ -255,36 +256,35 @@ <h1><a href="specs.html">Spec Runner</a></h1>
<script src="/app/services/userStats.service.spec.js"></script>
<script src="/app/settings/settings.spec.js"></script>
<script src="/app/skill-picker/skill-picker.spec.js"></script>
<script src="/app/blocks/exception/exception-handler.provider.spec.js"></script>
<script src="/app/account/login/login.spec.js"></script>
<script src="/app/account/register/register.spec.js"></script>
<script src="/app/account/logout/logout.controller.spec.js"></script>
<script src="/app/account/reset-password/reset-password.spec.js"></script>
<script src="/app/account/register/register.spec.js"></script>
<script src="/app/blocks/exception/exception-handler.provider.spec.js"></script>
<script src="/app/directives/badges/badge-tooltip.spec.js"></script>
<script src="/app/directives/busy-button/busy-button.directive.spec.js"></script>
<script src="/app/directives/challenge-tile/challenge-tile.spec.js"></script>
<script src="/app/directives/empty-state-placeholder/empty-state-placeholder.spec.js"></script>
<script src="/app/directives/external-account/external-account.directive.spec.js"></script>
<script src="/app/directives/tc-endless-paginator/tc-endless-paginator.spec.js"></script>
<script src="/app/directives/tc-paginator/tc-paginator.spec.js"></script>
<script src="/app/directives/tc-tabs/tc-tabs.directive.spec.js"></script>
<script src="/app/directives/external-account/external-links-data.directive.spec.js"></script>
<script src="/app/directives/external-account/external-web-links.directive.spec.js"></script>

<script src="/app/directives/tc-paginator/tc-paginator.spec.js"></script>
<script src="/app/directives/tc-endless-paginator/tc-endless-paginator.spec.js"></script>
<script src="/app/directives/tc-tabs/tc-tabs.directive.spec.js"></script>
<script src="/app/my-dashboard/community-updates/community-updates.spec.js"></script>
<script src="/app/my-dashboard/header-dashboard/header-dashboard.spec.js"></script>
<script src="/app/my-dashboard/my-challenges/my-challenges.spec.js"></script>
<script src="/app/my-dashboard/community-updates/community-updates.spec.js"></script>
<script src="/app/my-dashboard/srms/srms.spec.js"></script>
<script src="/app/my-dashboard/programs/programs.spec.js"></script>
<script src="/app/peer-review/completed-review/completed-review.spec.js"></script>
<script src="/app/peer-review/edit-review/edit-review.spec.js"></script>
<script src="/app/peer-review/review-status/review-status.spec.js"></script>
<script src="/app/peer-review/readOnlyScorecard/readOnlyScorecard.spec.js"></script>
<script src="/app/peer-review/review-status/review-status.spec.js"></script>
<script src="/app/profile/about/about.controller.spec.js"></script>
<script src="/app/profile/badges/badges.spec.js"></script>
<script src="/app/profile/subtrack/subtrack.spec.js"></script>
<script src="/app/settings/account-info/account-info.spec.js"></script>
<script src="/app/settings/edit-profile/edit-profile.spec.js"></script>
<script src="/app/settings/account-info/account-info.spec.js"></script>
<script src="/app/settings/preferences/preferences.spec.js"></script>
<script src="/app/directives/account/toggle-password/toggle-password.spec.js"></script>
<script src="/app/directives/account/toggle-password-with-tips/toggle-password-with-tips.spec.js"></script>
Empty file modified app/topcoder.constants.js
100755 → 100644
Empty file.
8 changes: 4 additions & 4 deletions assets/css/account/account.scss
Original file line number Diff line number Diff line change
@@ -186,23 +186,23 @@
}
.github {
.ico {
background-image: url(/images/svg/github.svg);
background-image: url(/images/github.svg);
background-repeat: no-repeat;
color: #404041;
}
}
.facebook {
margin-left: 41px;
.ico {
background-image: url(/images/svg/facebook.svg);
background-image: url(/images/facebook.svg);
background-repeat: no-repeat;
color: #0d72b9;
}
}
.google-plus {
margin-left: 43px;
.ico {
background-image: url(/images/svg/gplus.svg);
background-image: url(/images/gplus.svg);
background-position: center;
background-repeat: no-repeat;
border: 1px solid #d1d3d4;
@@ -213,7 +213,7 @@
.twitter {
margin-left: 40px;
.ico {
background-image: url(/images/svg/twitter.svg);
background-image: url(/images/twitter.svg);
background-repeat: no-repeat;
color: #26a9e0;
}
6 changes: 3 additions & 3 deletions assets/css/directives/external-web-link.scss
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@import 'tc-includes';
@import 'topcoder/tc-includes';

external-web-link {
.web-link {
@@ -23,15 +23,15 @@ external-web-link {
}
.form-field {
@include form-field;
@include ui-form-placeholder;

&:disabled {
color: #B7B7B7;
}
}
.form-field-focused {
@include form-field-focused;
}

.validation-bar.url {
flex: 1;
width: auto;
Binary file removed assets/fonts/devicon.eot
Binary file not shown.
155 changes: 0 additions & 155 deletions assets/fonts/devicon.svg

This file was deleted.

Binary file removed assets/fonts/devicon.ttf
Binary file not shown.
Binary file removed assets/fonts/devicon.woff
Binary file not shown.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
1 change: 0 additions & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -40,7 +40,6 @@
"angularjs-toaster": "~0.4.15",
"appirio-tech-ng-iso-constants": "[email protected]:appirio-tech/ng-iso-constants#~1.0.5",
"d3": "~3.5.6",
"devicon": "*",
"fontawesome": "~4.3.0",
"jstzdetect": "~1.0.6",
"moment": "~2.10.3",
4 changes: 1 addition & 3 deletions config.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module.exports = function() {
var constants = {
return {
'development': {
'CONSTANTS': {
API_URL: process.env.API_URL || 'https://api.topcoder-dev.com/v3',
@@ -231,6 +231,4 @@ module.exports = function() {
}
}
};

return constants;
};
44 changes: 44 additions & 0 deletions gulp-tasks/build.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
var runSequence = require('run-sequence');

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('build', function(done) {
utilities.log('Building everything');

runSequence(
'clean',
['optimize', 'fonts']
);

utilities.clean(config.temp, done);
});

gulp.task('build-specs', ['templatecache', 'ngConstants'], function() {
utilities.log('Building the spec runner');

var wiredep = require('wiredep').stream;
var options = config.getWiredepDefaultOptions();
options.devDependencies = true;

return gulp
.src(config.specRunner)
.pipe(wiredep(options))
.pipe($.inject(gulp.src(config.testlibraries),
{name: 'inject:testlibraries', read: false}))
.pipe($.inject(gulp.src(config.nonBowerScripts),
{name: 'inject:nonBowerScripts', read: false}))
.pipe($.inject(
gulp.src(config.js)
.pipe($.naturalSort())
.pipe($.angularFilesort())
))
.pipe($.inject(gulp.src(config.specHelpers),
{name: 'inject:spechelpers', read: false}))
.pipe($.inject(gulp.src(config.specs),
{name: 'inject:specs', read: false}))
.pipe($.inject(gulp.src(config.temp + config.templateCache.file),
{name: 'inject:templates', read: false}))
.pipe(gulp.dest(config.app));
});
};
11 changes: 11 additions & 0 deletions gulp-tasks/clean.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
var del = require('del'); // rm -rf

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('clean', function(done) {
var delconfig = [].concat(config.build, config.temp);
utilities.log('Cleaning: ' + $.util.colors.blue(delconfig));
del(delconfig, done);
});
};
11 changes: 11 additions & 0 deletions gulp-tasks/copy-files.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('copy-html', function() {
utilities.log('Moving app html files to .tmp');

return gulp
.src([config.app + '**/*.html', '!' + config.app + 'specs.html'])
.pipe(gulp.dest(config.temp));
});
};
54 changes: 54 additions & 0 deletions gulp-tasks/deploy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
var merge = require('merge-stream');
var awspublishRouter = require('gulp-awspublish-router');

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('deploy', ['build'], function() {
var awsConfig = {
params: {
Bucket: config.aws.bucket
},
"accessKeyId": config.aws.key,
"secretAccessKey": config.aws.secret
};

// create a new publisher
var publisher = $.awspublish.create(awsConfig);

utilities.log('Deploying to S3');

var gzip = gulp.src(['build/**/*.js', 'build/**/*.css']).pipe($.awspublish.gzip())
.pipe(awspublishRouter({
cache: {
cacheTime: 94608000,
allowTransform: false,
public: true
},
routes: {
"^.+$": "$&"
}
}));

var plain = gulp.src(['build/**/*', '!build/**/*.js', '!build/**/*.css'])
.pipe(awspublishRouter({
cache: {
cacheTime: 94608000,
allowTransform: false,
public: true
},
routes: {
"^.+\\.html": {
cacheTime: 0
},
"^.+$": "$&"
}
}));

return merge(gzip, plain)
.pipe(publisher.cache())
.pipe(publisher.publish())
.pipe($.if(!config.production, publisher.sync()))
.pipe($.awspublish.reporter());
});
};
15 changes: 15 additions & 0 deletions gulp-tasks/e2e.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('e2e', function() {
return gulp
.src(['./tests/e2e/app/*.js'])
.pipe($.angularProtractor({
'configFile': 'tests/e2e/conf.js',
'args': ['--baseUrl', 'http://127.0.0.1:8000'],
'autoStartStopServer': true,
'debug': true
}))
.on('error', function(e) { throw e });
});
};
11 changes: 11 additions & 0 deletions gulp-tasks/fonts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('fonts', function() {
utilities.log('Copying fonts');

return gulp
.src([config.fonts, 'bower_components/fontawesome/fonts/fontawesome-webfont.*'])
.pipe(gulp.dest(config.build + 'fonts'));
});
};
20 changes: 20 additions & 0 deletions gulp-tasks/images.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('images', ['images:move-skills'], function() {
utilities.log('Copying and compressing the images');

return gulp
.src([config.images, '!' + config.assets + 'images/skills/**.*'])
.pipe($.imagemin({optimizationLevel: 4}))
.pipe(gulp.dest(config.temp + 'images'));
});

gulp.task('images:move-skills', function() {
utilities.log('Copying original skill icons to build folder');

return gulp
.src(config.assets + 'images/skills/**.*')
.pipe(gulp.dest(config.build + 'images/skills'));
});
};
36 changes: 36 additions & 0 deletions gulp-tasks/inject.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('wiredep', ['jade'], function() {
utilities.log('Injecting bower css/js and app js files into index.jade');
var options = config.getWiredepDefaultOptions();
var wiredep = require('wiredep').stream;

return gulp
.src(config.index)
.pipe(wiredep(options))
.pipe($.inject(
gulp.src(config.js)
.pipe($.naturalSort('desc'))
.pipe($.angularFilesort()),
{relative: true}))
.pipe($.inject(gulp.src(config.nonBowerScripts, {read: false}), {
starttag: '//- inject:nonBowerScripts',
endtag: '//- endinject',
ignorePath: 'assets/'
}))
.pipe(gulp.dest(config.app));
});

gulp.task('inject', ['wiredep', 'styles', 'templatecache'], function() {
utilities.log('Injecting app css into index.jade');

return gulp
.src(config.index)
.pipe($.inject( // Sort the css (topcoder.css, then everything else)
gulp.src(config.css, {read: false})
.pipe($.naturalSort('desc')),
{ignorePath: '.tmp', addRootSlash: false}))
.pipe(gulp.dest(config.app));
});
};
20 changes: 20 additions & 0 deletions gulp-tasks/jade.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
var envFile = require('../config.js')();
var envConfig = envFile[process.env.ENVIRONMENT || 'development'];

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('jade', function() {
utilities.log('Compiling Jade --> HTML');

return gulp
.src(config.jade)
.pipe($.plumber())
.pipe($.data(function(file) {
return envConfig;
}))
.pipe($.jade({pretty: true}))
.pipe($.replace(/-->/g, ' -->'))
.pipe(gulp.dest(config.temp));
});
};
17 changes: 17 additions & 0 deletions gulp-tasks/linters.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
var args = require('yargs').argv;

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('vet', function() {
utilities.log('Analyzing source with JSHint and JSCS');

return gulp
.src(config.alljs)
.pipe($.if(args.verbose, $.print())) // gulp vet --verbose to trigger this line
.pipe($.jscs())
.pipe($.jshint())
.pipe($.jshint.reporter('jshint-stylish', {verbose: true}))
.pipe($.jshint.reporter('fail'));
});
};
18 changes: 18 additions & 0 deletions gulp-tasks/ng-constants.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
var envFile = require('../config.js')();
var envConfig = envFile[process.env.ENVIRONMENT || 'development'];

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('ngConstants', function() {
utilities.log('Creating ng-constants file')

return $.ngConstant({
name: 'CONSTANTS',
constants: envConfig,
stream: true
})
.pipe($.rename('topcoder.constants.js'))
.pipe(gulp.dest(config.app));
});
};
56 changes: 56 additions & 0 deletions gulp-tasks/optimize.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
var envFile = require('../config.js')();
var envConfig = envFile[process.env.ENVIRONMENT || 'development'];
var RevAll = require('gulp-rev-all');
var merge = require('merge-stream');

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('optimize', ['inject', 'test', 'ngConstants', 'images'], function() {
utilities.log('Optimizing the JavaScript, CSS, and HTML');

var assets = $.useref.assets({searchPath: ['.tmp', 'app', 'assets']});
var templateCache = config.temp + config.templateCache.file;
var cssFilter = $.filter('**/*.css');
var jsLibFilter = $.filter('**/' + config.optimized.vendor);
var jsAppFilter = $.filter('**/' + config.optimized.app);

var imageStream = gulp.src(config.temp + '/**/*.{svg,png,jpg,jpeg,gif}');
var userefStream = gulp
.src(config.indexHtml)
.pipe($.plumber())
.pipe($.inject(gulp.src(templateCache, {read: false}), {
starttag: '<!-- inject:templates.js -->',
endtag: '<!-- endinject -->',
relative: true
}))
.pipe(assets)
.pipe(cssFilter)
.pipe($.csso())
.pipe(cssFilter.restore())
.pipe(jsLibFilter)
.pipe($.uglify())
.pipe(jsLibFilter.restore())
.pipe(jsAppFilter)
.pipe($.if(!config.production && !config.qa, $.sourcemaps.init()))
.pipe($.ngAnnotate())
.pipe($.uglify())
.pipe(jsAppFilter.restore())
.pipe(assets.restore())
.pipe($.useref())

var revAll = new RevAll({
prefix: envConfig.CONSTANTS.ASSET_PREFIX,
dontRenameFile: [/^\/index.html/g]
});

return merge(userefStream, imageStream)
.pipe(revAll.revision())
.pipe($.if(!config.production && !config.qa, $.sourcemaps.write()))
// Uncomment if you want to see the JSON file containing
// the file mapping (e.g., "{"js/app.js": "js/app-a9bae026bc.js"}")
// .pipe(gulp.dest(config.build))
// .pipe(revAll.manifestFile())
.pipe(gulp.dest(config.build));
});
};
24 changes: 24 additions & 0 deletions gulp-tasks/scss.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
var envFile = require('../config.js')();
var envConfig = envFile[process.env.ENVIRONMENT || 'development'];

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('styles', function() {
utilities.log('Compiling Sass --> CSS');

var assetPrefix = envConfig.CONSTANTS.ASSET_PREFIX.length ? envConfig.CONSTANTS.ASSET_PREFIX : '/';

return gulp
.src(config.sass, {base: './'})
.pipe($.plumber())
.pipe($.sass({includePaths: require('appirio-styles').includePaths}))
.pipe($.autoprefixer({browsers: ['last 2 version']}))
.pipe($.replace(/\/fonts/g, assetPrefix + 'fonts'))
.pipe(gulp.dest(config.temp));
});

gulp.task('sass-watcher', function() {
gulp.watch([config.sass], ['styles']);
});
};
101 changes: 101 additions & 0 deletions gulp-tasks/serve.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
var browserSync = require('browser-sync');
var histFallback = require('connect-history-api-fallback');

module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('serve', ['inject', 'ngConstants'], function() {
gulp.watch(config.sass, ['styles'])
.on('change', function(event) { utilities.changeEvent(event); });

gulp.watch(config.jade, ['templatecache'])
.on('change', function(event) { utilities.changeEvent(event); });

var options = {
server: {
baseDir: [config.temp, config.app, config.assets],
// Enables serving index.html for Angular HTML5 mode
middleware: [histFallback()],
routes: {
'/bower_components': 'bower_components'
}
},
files: config.watchFiles,
ghostMode: {
clicks: true,
location: false,
forms: true,
scroll: true
},
logPrefix: 'Topcoder-Account',
notify: false,
port: 3000,
reloadDelay: 1000
};

browserSync(options);

});

gulp.task('serve-specs', ['build-specs'], function() {
utilities.log('Run the spec runner');

gulp.watch(config.sass, ['styles'])
.on('change', function(event) { utilities.changeEvent(event); });

gulp.watch(config.jade, ['templatecache'])
.on('change', function(event) { utilities.changeEvent(event); });

var options = {
server: {
baseDir: ['./'],
// Enables serving index.html for Angular HTML5 mode
middleware: [histFallback()],
routes: {
'/bower_components': 'bower_components'
}
},
files: config.watchFiles,
ghostMode: {
clicks: true,
location: false,
forms: true,
scroll: true
},
logPrefix: 'Topcoder-Account',
notify: false,
reloadDelay: 1000,
startPath: config.app + config.specRunnerFile
};

browserSync(options);
});

gulp.task('serve-build', ['build'], function() {
// TODO: Figure out why watch doesn't work. Jade running before wiredep?

gulp.watch([config.sass, config.js, config.jade], ['optimize', browserSync.reload])
.on('change', function(event) { utilities.changeEvent(event); });

var options = {
server: {
baseDir: config.build,
// Enables serving index.html for Angular HTML5 mode
middleware: [histFallback()]
},
files: [],
ghostMode: {
clicks: true,
location: false,
forms: true,
scroll: true
},
logPrefix: 'Topcoder-Account',
notify: false,
reloadDelay: 1000
};

browserSync(options);

});
};
16 changes: 16 additions & 0 deletions gulp-tasks/template-cache.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
module.exports = function(gulp, $, config, utilities) {
'use strict';

gulp.task('templatecache', ['jade'], function() {
utilities.log('Creating AngularJS $templateCache');

return gulp
.src(config.htmltemplates)
.pipe($.minifyHtml({empty: true}))
.pipe($.angularTemplatecache(
config.templateCache.file,
config.templateCache.options
))
.pipe(gulp.dest(config.temp));
});
};
12 changes: 12 additions & 0 deletions gulp-tasks/tests.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
module.exports = function(gulp, $, config, utilities) {
'use strict';

// vet should be run before tests
gulp.task('test', ['templatecache', 'ngConstants'], function(done) {
utilities.startTests(true /* singleRun */, done);
});

gulp.task('autotest', ['vet', 'templatecache', 'ngConstants'], function(done) {
utilities.startTests(false, done);
});
};
51 changes: 51 additions & 0 deletions gulp-tasks/utilities.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
var config = require('../gulp.config')();
var util = require('gulp-util');
var del = require('del'); // rm -rf
var path = require('path');

exports.changeEvent = function(event) {
var srcPattern = new RegExp('/.*(?=/' + config.source + ')/');
this.log('File ' + event.path.replace(srcPattern, '') + ' ' + event.type);
}

exports.clean = function(path, done) {
this.log('Cleaning: ' + util.colors.blue(path));
del(path, done);
}

exports.log = function(msg) {
if (typeof(msg) === 'object') {
for (var item in msg) {
if (msg.hasOwnProperty(item)) {
util.log(util.colors.blue(msg[item]));
}
}
} else {
util.log(util.colors.blue(msg));
}
}

exports.startTests = function(singleRun, done) {
var karma = require('karma').server;
var excludeFiles = [];
var serverSpecs = config.serverIntegrationSpecs;

excludeFiles = serverSpecs;

karma.start({
configFile: path.join(__dirname,'../karma.conf.js'),
exclude: excludeFiles,
singleRun: !!singleRun
}, karmaCompleted.bind(this));

function karmaCompleted(karmaResult) {
this.log('Karma completed!');
if (karmaResult === 1) {
done('karma: tests failed with code ' + karmaResult);
} else {
done();
}
}
}

return module.exports;
501 changes: 13 additions & 488 deletions gulpfile.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -50,6 +50,7 @@
"gulp-ng-constant": "^0.3.0",
"gulp-plumber": "^1.0.1",
"gulp-print": "^1.1.0",
"gulp-rename": "^1.2.2",
"gulp-replace": "^0.5.3",
"gulp-replace-task": "^0.11.0",
"gulp-rev": "^5.0.1",
@@ -80,7 +81,7 @@
"phantomjs": "^1.9.17",
"protractor-html-screenshot-reporter": "0.0.21",
"protractor-linkuisref-locator": "^1.1.2",
"sc5-styleguide": "^0.3.39",
"run-sequence": "^1.1.5",
"sinon": "^1.15.3",
"sinon-chai": "^2.8.0",
"wiredep": "^2.2.2",