| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373 | /* Utlimate Jay Mega Gulpfile *//* global require:true *//* jshint laxbreak:true */(function () {    'use strict';     var pkg       = require('./package.json'),        del       = require('del'),        yargs     = require('yargs'),        exec      = require('exec'),        fs        = require('fs'),        spawn     = require('child_process').spawn,        gulp      = require('gulp'),        bump      = require('gulp-bump'),        header    = require('gulp-header'),        cssmin    = require('gulp-cssmin'),        prefixer  = require('gulp-autoprefixer'),        uglify    = require('gulp-uglify'),        sourcemap = require('gulp-sourcemaps'),        jshint    = require('gulp-jshint'),        gutil     = require('gulp-util'),        zip       = require('gulp-zip'),        rename    = require('gulp-rename'),        replace   = require('gulp-replace'),        gsync     = require('gulp-sync'),        sync      = gsync(gulp).sync;    var bumpVersion = yargs.argv.type || 'patch';    var settings = {        name: 'vegas',        banner: {            content: [                '/*!-----------------------------------------------------------------------------',                ' * <%= pkg.description %>',                ' * v<%= pkg.version %> - built <%= datetime %>',                ' * Licensed under the MIT License.',                ' * http://vegas.jaysalvat.com/',                ' * ----------------------------------------------------------------------------',                ' * Copyright (C) 2010-<%= year %> Jay Salvat',                ' * http://jaysalvat.com/',                ' * --------------------------------------------------------------------------*/',                ''            ].join('\n'),            vars: {                pkg: pkg,                datetime: gutil.date('yyyy-mm-dd'),                year: gutil.date('yyyy')            }        }    };    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.name + '.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("npm-publish", function (cb) {        exec('npm publish', 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 + ');');        return cb();    });    gulp.task('bump', function () {        return gulp.src([ 'package.json', 'bower.json', 'component.json' ])            .pipe(bump(                /^[a-z]+$/.test(bumpVersion)                     ? { type: bumpVersion }                     : { version: bumpVersion }            ))            .pipe(gulp.dest('.'));    });    gulp.task('year', function () {        return gulp.src([ './LICENSE.md', './README.md' ])            .pipe(replace(/(Copyright )(\d{4})/g, '$1' + gutil.date('yyyy')))            .pipe(gulp.dest('.'));    });    gulp.task('lint', function() {        return gulp.src('./src/**.js')            .pipe(jshint())            .pipe(jshint.reporter('default'));    });    gulp.task('copy', function () {        return gulp.src('./src/**/*')            .pipe(gulp.dest('./dist'));    });    gulp.task('autoprefixer', function () {        return gulp.src('./dist/**/*.css')            .pipe(prefixer())            .pipe(gulp.dest('./dist'));    });    gulp.task('uglify', function () {        return gulp.src('./dist/**/!(*.min.js).js')            .pipe(rename({ suffix: '.min' }))            .pipe(sourcemap.init())            .pipe(uglify({                compress: {                    warnings: false                },                mangle: true,                outSourceMap: true            }))            .pipe(sourcemap.write('.'))            .pipe(gulp.dest('./dist/'));    });    gulp.task('cssmin', function () {        return gulp.src('./dist/**/!(*.min.css).css')            .pipe(prefixer())            .pipe(rename({ suffix: '.min' }))            .pipe(cssmin())            .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('gh-pages', function (cb) {        var 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('changelog', function (cb) {        var filename  = 'CHANGELOG.md',            editor    = process.env.EDITOR || 'vim',            version   = getPackageJson().version,            date      = gutil.date('yyyy-mm-dd'),            changelog = fs.readFileSync(filename).toString(),            lastDate  = /\d{4}-\d{2}-\d{2}/.exec(changelog)[0];        exec('git log --since="' + lastDate + '" --oneline --pretty=format:"%s"', function (err, stdout, stderr) {            if (err) {                return cb(err);            }            if (!stdout) {                return cb();            }            var updates = [                '### Vegas ' + version + ' ' + date,                '',                '* ' + stdout.replace(/\n/g, '\n* ')            ].join('\n');            changelog = changelog.replace(/(## CHANGE LOG)/, '$1\n\n' + updates);            fs.writeFileSync(filename, changelog);            var vim = spawn(editor, [ filename, '-n', '+7' ], {                stdio: 'inherit'            });            vim.on('close', function (e, code) {                return cb();            });        });    });    gulp.task('watch', function() {        gulp.watch("./src/**/*", [ 'build' ]);    });    gulp.task('build', sync([        'lint',        'clean',         'copy',         'autoprefixer',        'uglify',        'cssmin',        'header'    ],     'building'));    gulp.task('release', sync([      [ 'fail-if-not-master', 'fail-if-dirty' ],        'git-pull',        'bump',        'changelog',        'year',        'clean',        'copy',        'autoprefixer',        'uglify',        'cssmin',        'header',        'git-add',        'git-commit',        'git-tag',        'git-push',        'publish',        'npm-publish'    ],     'releasing'));    gulp.task('publish', sync([      [ 'fail-if-not-master', 'fail-if-dirty' ],        'tmp-create',        'tmp-copy',        'meta',        'zip',        'gh-pages',        'tmp-clean'    ],     'publising'));})();/*NPM Installation----------------npm install --save-dev delnpm install --save-dev yargsnpm install --save-dev execnpm install --save-dev fsnpm install --save-dev gulpnpm install --save-dev gulp-bumpnpm install --save-dev gulp-headernpm install --save-dev gulp-cssminnpm install --save-dev gulp-autoprefixernpm install --save-dev gulp-uglifynpm install --save-dev gulp-sourcemapsnpm install --save-dev gulp-jshintnpm install --save-dev gulp-utilnpm install --save-dev gulp-zipnpm install --save-dev gulp-renamenpm install --save-dev gulp-replacenpm install --save-dev gulp-syncGh-pages creation-----------------git checkout --orphan gh-pagesgit rm -rf .rm -frecho 'Welcome' > index.htmlgit add index.htmlgit commit -a -m 'First commit'git push origin gh-pagesgit checkout -*/
 |