cwill747/angular-libphonenumber

View on GitHub
gulpfile.js

Summary

Maintainability
A
1 hr
Test Coverage
var express = require('express');
var gulp = require('gulp');
var Server = require('karma').Server;
var path = require('path');
var plugins = require('gulp-load-plugins')({
  config: path.join(__dirname, 'package.json')
});
var gutil = require('gulp-util');

var noop = function() {};
var pkg = require('./package.json');
var header = ['/**',
    ' * <%= pkg.name %>',
    ' * <%= pkg.description %>',
    ' * @version v<%= pkg.version %>',
    ' * @link <%= pkg.homepage %>',
    ' * @license <%= pkg.license %>',
    ' */',
    '(function (angular) {',
    '',
    ''
  ].join('\n');
var footer = [
    '',
    '})(angular);',
    ''
  ].join('\n');
var paths = {
  src: {
    files: ['src/**/*.js'],
    e2e: ['src/**/*.e2e.js']
  }
};
var commonBuild = {
  libs: [],
  files: [
    'src/*.js'
  ]
};

function filterNonCodeFiles() {
  return plugins.filter(function(file) {
    return !/\.json$|\.spec\.js$|\.e2e\.js$/.test(file.path);
  });
}

function customBuild() {
  var buildFilename = 'angular-libphonenumber';

  return function() {
    return gulp.src(commonBuild.files)
      .pipe(filterNonCodeFiles())
      .pipe(plugins.concat(buildFilename + '.js'))
      .pipe(plugins.header(header, {pkg: pkg}))
      .pipe(plugins.footer(footer))
      .pipe(gulp.dest('./dist/'))
      .pipe(plugins.uglify({preserveComments: 'some'}))
      .pipe(plugins.concat(buildFilename + '.min.js'))
      .pipe(gulp.dest('./dist/'));
  };
}

gulp.task('build', customBuild());

gulp.task('lint', function() {
  gulp.src(paths.src.files)
    .pipe(filterNonCodeFiles())
    .pipe(plugins.jshint())                               // hint (optional)
    .pipe(plugins.jscs())                                 // enforce style guide
    .on('error', noop)                                    // don't stop on error
    .pipe(plugins.jscsStylish.combineWithHintResults())   // combine with jshint results
    .pipe(plugins.jshint.reporter('jshint-stylish'));
});

gulp.task('default', ['lint', 'test', 'build'], function() {
  gulp.watch(paths.src.files, ['lint', 'build']);
});

gulp.task('serve', ['build'], function() {
  var server = express();

  server.use(express.static('./'));
  server.listen(8000, function() {
    console.log('Server running in port 8000');
  });
  // gulp.src('./')
  //   .pipe(plugins.webserver());
});

gulp.task('test:unit', function(done) {

  new Server({
    singleRun: true,
    configFile: path.join(__dirname, 'config/karma.conf.js')
  }, function(err){
    if(err === 0){
      done();
    } else {
      done(new gutil.PluginError('karma', {
        message: 'Karma Tests failed'
      }));
    }
  }).start();
});

gulp.task('test-watch', function(done) {

  new Server({
    singleRun: false,
    autoWatch: true,
    configFile: path.join(__dirname, 'config/karma.conf.js')
  }, function(err){
    if(err === 0){
      done();
    } else {
      done(new gutil.PluginError('karma', {
        message: 'Karma Tests failed'
      }));
    }
  }).start();
});

// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
gulp.task('webdriver_update', require('gulp-protractor').webdriver_update);
// jscs:enable requireCamelCaseOrUpperCaseIdentifiers

gulp.task('test:e2e', ['webdriver_update', 'serve'], function() {
  gulp.src(paths.src.e2e)
    .pipe(plugins.protractor.protractor({
      configFile: path.join(__dirname, 'config/protractor.conf.js')
    }))
    .on('error', function(e) { throw e; })
    .pipe(plugins.exit());
});

gulp.task('test', ['test:unit', 'test:e2e']);

/**
 * Bumping version number and tagging the repository with it.
 * Please read http://semver.org/
 *
 * You can use the commands
 *
 *     gulp patch     # makes v0.1.0 → v0.1.1
 *     gulp feature   # makes v0.1.1 → v0.2.0
 *     gulp release   # makes v0.2.1 → v1.0.0
 *
 * To bump the version numbers accordingly after you did a patch,
 * introduced a feature or made a backwards-incompatible release.
 */

function inc(importance) {
  // get all the files to bump version in
  return gulp.src(['./package.json', './bower.json'])
    // bump the version number in those files
    .pipe(plugins.bump({type: importance}))
    // save it back to filesystem
    .pipe(gulp.dest('./'));
  // commit the changed version number
  // .pipe(plugins.git.commit('chore: bump package version'))
}

gulp.task('patch', function() {
  return inc('patch');
});
gulp.task('feature', function() {
  return inc('minor');
});
gulp.task('release', function() {
  return inc('major');
});