slush-source3
Version:
Source 3 generator
169 lines (134 loc) • 4.98 kB
JavaScript
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']);