UNPKG

slush-source3

Version:

Source 3 generator

169 lines (134 loc) 4.98 kB
var fs = require('fs'), gulp = require('gulp'), shell = require('gulp-shell'), rename = require('gulp-rename'), sequence = require('run-sequence'), rimraf = require('gulp-rimraf'), json_nice = require('json-nice'); require('colors'); // ======================================== Copy templates gulp.task('install-templates', function() { return gulp.src([ __dirname + '/templates/**', __dirname + '/templates/.htaccess', __dirname + '/templates/cache/.*', __dirname + '/templates/application/uploads/.*', ]) .pipe(gulp.dest('.')); }); // ======================================== Install root Composer dependencies gulp.task('root-composer-install', function() { return gulp.src('.', {read: false}) .pipe(shell('composer install --optimize-autoloader')); }); // ======================================== Install root NPM dependencies gulp.task('root-npm-install', function() { return gulp.src('.', {read: false}) .pipe(shell('npm install')); }); // ======================================== Install NPM dependencies in Source 3 gulp.task('source3-npm-install', function() { var cwd = process.cwd(); process.chdir('./vendor/pyrsmk/source-3'); var stream = gulp.src('.', {read: false}) .pipe(shell('npm install')); process.chdir(cwd); return stream; }); // ======================================== Install Bower dependencies in Source 3 gulp.task('source3-bower-install', function() { var cwd = process.cwd(); process.chdir('./vendor/pyrsmk/source-3'); var stream = gulp.src('.', {read: false}) .pipe(shell('bower install')); process.chdir(cwd); return stream; }); // ======================================== Backup application directory gulp.task('backup-application', function() { if(fs.existsSync('./application') && !fs.existsSync('./application-backup')) { fs.renameSync('./application', './application-backup'); } }); // ======================================== Restore application directory gulp.task('restore-application-backup', function() { fs.renameSync('./application-backup', './application'); }); // ======================================== Remove application directory gulp.task('remove-application-dir', function() { return gulp.src('./application/', {read: false}) .pipe( rimraf() ); }); // ======================================== Remove templates directories gulp.task('remove-templates', function() { return gulp.src([ './*', './.*', '!./application-backup/', '!./src/', '!./package-backup.json', '!./composer-backup.json', ], {read: false}) .pipe( rimraf() ); }); // ======================================== Backup NPM packages gulp.task('backup-npm-packages', function() { fs.renameSync('./package.json', './package-backup.json'); }); // ======================================== Restore previously saved NPM packages gulp.task('restore-npm-packages', function() { var file1 = require(process.cwd() + '/package-backup.json'), file2 = require(process.cwd() + '/package.json'); file2.dependencies = file1.dependencies; fs.writeFileSync(process.cwd() + '/package.json', json_nice(file2)); fs.unlinkSync(process.cwd() + '/package-backup.json'); }); // ======================================== Backup Composer packages gulp.task('backup-composer-packages', function() { fs.renameSync('./composer.json', './composer-backup.json'); }); // ======================================== Restore previously saved Composer packages gulp.task('restore-composer-packages', function() { var file1 = require(process.cwd() + '/composer-backup.json'), file2 = require(process.cwd() + '/composer.json'); file2.require = file1.require; fs.writeFileSync(process.cwd() + '/composer.json', json_nice(file2)); fs.unlinkSync(process.cwd() + '/composer-backup.json'); }); // ======================================== Display important messages gulp.task('display-messages', function() { console.warn("\n Don't forget to run 'gulp css' and 'gulp js' after updating\n".bold.red); }); // ======================================== Install gulp.task('install', function(cb) { sequence( 'install-templates', 'root-composer-install', 'root-npm-install', 'source3-npm-install', 'source3-bower-install', cb ); }); // ======================================== Update gulp.task('update', function(cb) { sequence( 'backup-application', 'backup-npm-packages', 'backup-composer-packages', 'remove-templates', 'install-templates', 'restore-composer-packages', 'restore-npm-packages', 'root-composer-install', 'root-npm-install', 'source3-npm-install', 'source3-bower-install', 'remove-application-dir', 'restore-application-backup', 'display-messages', cb ); }); // ======================================== Default gulp.task('default', ['install']);