Skip to content

Commit

Permalink
Update gulpfile
Browse files Browse the repository at this point in the history
  • Loading branch information
jaysalvat committed Oct 24, 2014
1 parent 752fe72 commit d8b1825
Show file tree
Hide file tree
Showing 7 changed files with 535 additions and 478 deletions.
626 changes: 228 additions & 398 deletions dist/jquery.facedetection.js

Large diffs are not rendered by default.

23 changes: 12 additions & 11 deletions dist/jquery.facedetection.min.js

Large diffs are not rendered by default.

13 changes: 1 addition & 12 deletions dist/jquery.facedetection.min.js.map

Large diffs are not rendered by default.

313 changes: 262 additions & 51 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,51 @@
/*
Utlimate Mega Gulpfile
Jay Salvat
*/

(function () {
"use strict";

var gulp = require('gulp'),
uglify = require('gulp-uglifyjs'),
header = require('gulp-header'),
gutil = require('gulp-util'),
replace = require('gulp-replace'),
bump = require('gulp-bump'),

var pkg = require("./package.json"),
del = require("del"),
yargs = require("yargs"),
exec = require("exec"),
fs = require("fs"),
gulp = require("gulp"),
bump = require("gulp-bump"),
header = require("gulp-header"),
qunit = require("gulp-qunit"),
uglify = require("gulp-uglifyjs"),
jshint = require('gulp-jshint'),
qunit = require('gulp-qunit'),
del = require('del'),
yargs = require('yargs').argv,
pkg = require('./package.json');
gutil = require("gulp-util"),
zip = require("gulp-zip"),
replace = require("gulp-replace"),
gsync = require("gulp-sync"),
sync = gsync(gulp).sync;

var version = yargs.type || 'patch';

// Settings
var version = yargs.argv.type || "patch";

var settings = {
banner: {
content: [
'// ----------------------------------------------------------------------------',
'// <%= pkg.description %>',
'// v<%= pkg.version %> released <%= datetime %>',
'// <%= pkg.homepage %>',
'// Copyright (c) 2010-<%= year %>, Jay Salvat',
'// http://jaysalvat.com/',
'// ----------------------------------------------------------------------------',
'// ccv.js and cascade.js',
'// Copyright (c) 2010-<%= year %>, Liu Liu',
'// http://liuliu.me/',
'// ----------------------------------------------------------------------------',
content: [
'/*! ----------------------------------------------------------------------------',
' * <%= pkg.description %>',
' * v<%= pkg.version %> released <%= datetime %>',
' * <%= pkg.homepage %>',
' * Copyright (c) 2010-<%= year %>, Jay Salvat',
' * http://jaysalvat.com/',
' * ----------------------------------------------------------------------------',
' * ccv.js and cascade.js',
' * Copyright (c) 2010-<%= year %>, Liu Liu',
' * http://liuliu.me/',
' * ----------------------------------------------------------------------------',
' */',
'',
].join('\n'),
].join("\n"),
vars: {
"pkg": pkg,
"datetime": gutil.date("yyyy-mm-dd HH:MM"),
"year": gutil.date("yyyy"),
pkg: pkg,
datetime: gutil.date("yyyy-mm-dd HH:MM"),
year: gutil.date("yyyy")
}
},
files: {
Expand All @@ -52,24 +61,118 @@
}
};

// Tasks
var getPackageJson = function () {
return JSON.parse(fs.readFileSync('./package.json'));
};

gulp.task("clean", function (cb) {
return del([ "./dist" ], cb);
});

gulp.task("tmp-clean", function (cb) {
return del([ "./tmp" ], cb);
});

gulp.task("tmp-create", function (cb) {
return exec("mkdir -p ./tmp", cb);
});

gulp.task("tmp-copy", [ "tmp-create" ], function () {
return gulp.src("./dist/*")
.pipe(gulp.dest("./tmp"));
});

gulp.task("zip", [ "tmp-create" ], function () {
var filename = settings.files.out + ".zip";

return gulp.src("./dist/*")
.pipe(zip(filename))
.pipe(gulp.dest("./tmp"));
});

gulp.task("fail-if-dirty", function (cb) {
return exec('git diff-index HEAD --', function (err, output) { // err, output, code
if (err) {
return cb(err);
}
if (output) {
return cb("Repository is dirty");
}
return cb();
});
});

gulp.task("fail-if-not-master", function (cb) {
exec('git symbolic-ref -q HEAD', function (err, output) { // err, output, code
if (err) {
return cb(err);
}
if (!/refs\/heads\/master/.test(output)) {
return cb("Branch is not Master");
}
return cb();
});
});

gulp.task("git-tag", function (cb) {
var message = "v" + getPackageJson().version;

return exec('git tag ' + message, cb);
});

gulp.task("git-add", function (cb) {
return exec('git add -A', cb);
});

gulp.task("git-commit", [ "git-add" ], function (cb) {
var message = "Build v" + getPackageJson().version;

return exec('git commit -m "' + message + '"', cb);
});

gulp.task("git-pull", function (cb) {
return exec('git pull origin master', function (err, output, code) {
if (code !== 0) {
return cb(err + output);
}
return cb();
});
});

gulp.task("git-push", [ "git-commit" ], function (cb) {
return exec('git push origin master --tags', function (err, output, code) {
if (code !== 0) {
return cb(err + output);
}
return cb();
});
});

gulp.task("meta", [ "tmp-create" ], function (cb) {
var metadata = {
date: gutil.date("yyyy-mm-dd HH:MM"),
version: "v" + getPackageJson().version
},
json = JSON.stringify(metadata, null, 4);

fs.writeFileSync("tmp/metadata.json", json);
fs.writeFileSync("tmp/metadata.js", "__metadata(" + json + ");");

gulp.task('clean', function(cb) {
del([ 'dist' ], cb);
return cb();
});

gulp.task('bump', function(){
gulp.src([ 'facedetection.jquery.json', 'package.json', 'bower.json' ])
gulp.task("bump", function () {
return gulp.src([ "package.json", "bower.json", "facedetection.jquery.json" ])
.pipe(bump({
type: version
}))
.pipe(gulp.dest('./'));
.pipe(gulp.dest("."));
});

gulp.task('license', function(){
return gulp.src([ './LICENSE' ])
.pipe(replace(/( 2010-)(\d{4})/g, '$1' + gutil.date("yyyy")))
.pipe(gulp.dest('.'));
gulp.task("license", function () {
return gulp.src([ "./LICENSE.md", "./README.md" ])
.pipe(replace(/( 2010-)(\d{4})/g, "$1" + gutil.date("yyyy")))
.pipe(gulp.dest("."));
});

gulp.task('lint', function() {
Expand All @@ -78,35 +181,143 @@
.pipe(jshint.reporter('default'));
});

gulp.task('test', [ 'lint' ], function() {
return gulp.src('./tests/test-runner.html')
gulp.task("test-dev", function () {
return gulp.src("./tests/test-runner.html")
.pipe(qunit());
});

gulp.task('minify', [ 'clean' ], function() {
gulp.task("test-dist", function () {
return gulp.src("./tests/test-runner-dist.html")
.pipe(qunit());
});

gulp.task("uglify", function () {
settings.banner.vars.pkg = getPackageJson();

return gulp.src(settings.files.in)
.pipe(uglify(settings.files.out + '.min.js', {
outSourceMap: true,
enclose: settings.enclose,
'mangle': true
compress: {
warnings: false
},
mangle: true,
outSourceMap: true
}))
.pipe(header(settings.banner.content, settings.banner.vars ))
.pipe(gulp.dest('./dist/'));
});

gulp.task('beautify', [ 'clean' ], function() {
gulp.task("beautify", function () {
return gulp.src(settings.files.in)
.pipe(uglify(settings.files.out + '.js', {
enclose: settings.enclose,
mangle: false,
compress: false,
compress: {
warnings: false
},
output: {
beautify: true
}
},
mangle: false
}))
.pipe(gulp.dest('./dist/'));
});

gulp.task("header", function () {
settings.banner.vars.pkg = getPackageJson();

return gulp.src('./dist/*.js')
.pipe(header(settings.banner.content, settings.banner.vars ))
.pipe(gulp.dest('./dist/'));
});

gulp.task('build', [ 'clean', 'lint', 'test', 'beautify', 'minify', 'license' ]);
gulp.task("gh-pages", function (cb) {
version = getPackageJson().version;

exec([ 'git checkout gh-pages',
'rm -rf releases/' + version,
'mkdir -p releases/' + version,
'cp -r tmp/* releases/' + version,
'git add -A releases/' + version,
'rm -rf releases/latest',
'mkdir -p releases/latest',
'cp -r tmp/* releases/latest',
'git add -A releases/latest',
'git commit -m "Publish release v' + version + '."',
'git push origin gh-pages',
'git checkout -'
].join(" && "),
function (err, output, code) {
if (code !== 0) {
return cb(err + output);
}
return cb();
}
);
});

gulp.task("test", sync([
"lint",
"test-dev"
],
"building"));

gulp.task("build", sync([
"lint",
"test-dev",
"clean",
"beautify",
"uglify",
"header",
"test-dist"
],
"building"));

gulp.task("release", sync([
[ "fail-if-not-master", "fail-if-dirty" ],
"git-pull",
"lint",
"test-dev",
"bump",
"license",
"clean",
"beautify",
"uglify",
"header",
"test-dist",
"git-add",
"git-commit",
"git-tag",
"git-push",
"publish"
],
"releasing"));

gulp.task("publish", sync([
[ "fail-if-not-master", "fail-if-dirty" ],
"tmp-create",
"tmp-copy",
"meta",
"zip",
"gh-pages",
"tmp-clean"
],
"publising"));
})();

/*
NOTES
=====
Gh-pages creation
-----------------
git checkout --orphan gh-pages
git rm -rf .
rm -fr
echo "Welcome" > index.html
git add index.html
git commit -a -m "First commit"
git push origin gh-pages
git checkout -
*/
14 changes: 9 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,17 @@
"homepage": "http://facedetection.jaysalvat.com",
"devDependencies": {
"del": "^0.1.1",
"gulp": "^3.8.7",
"exec": "^0.1.2",
"gulp": "^3.8.9",
"gulp-bump": "^0.1.11",
"gulp-header": "^1.0.5",
"gulp-jshint": "^1.8.4",
"gulp-header": "^1.2.2",
"gulp-jshint": "^1.8.5",
"gulp-qunit": "^0.3.3",
"gulp-replace": "^0.4.0",
"gulp-sync": "^0.1.3",
"gulp-uglifyjs": "^0.4.2",
"gulp-util": "^3.0.0",
"yargs": "^1.3.1"
"gulp-util": "^3.0.1",
"gulp-zip": "^2.0.2",
"yargs": "^1.3.2"
}
}
Loading

0 comments on commit d8b1825

Please sign in to comment.