slush-source4
Version:
Source 4 generator
114 lines (97 loc) • 3.3 kB
JavaScript
const fs = require('fs')
const gulp = require('gulp')
const shell = require('gulp-shell')
const rename = require('gulp-rename')
const sequence = require('run-sequence')
// ======================================== Copy template
gulp.task('copy-template', function () {
let sources = []
if (fs.existsSync('application/')) {
sources.push(`${__dirname}/template/gulpfile.js`)
sources.push(`${__dirname}/template/index.php`)
sources.push(`${__dirname}/template/gitignore`)
sources.push(`${__dirname}/template/README.md`)
sources.push(`${__dirname}/template/.docker-build`)
sources.push(`${__dirname}/template/Makefile`)
} else {
sources.push(`${__dirname}/template/**`)
sources.push(`${__dirname}/template/**/.keep`)
sources.push(`${__dirname}/template/.*`)
}
return gulp.src(sources)
/*
Prevent NPM/Yarn to remove .gitignore file:
- https://github.com/npm/npm/issues/1862
- https://github.com/npm/npm/issues/3763
*/
.pipe(rename(function (path) {
if (path.basename == 'gitignore') {
path.basename = '.gitignore'
}
return path
}))
.pipe(gulp.dest('.'))
})
// ======================================== Install app PHP dependencies
gulp.task('install-app-php-libs', function () {
return gulp.src('.', {read: false}).pipe(
fs.existsSync('vendor/') ?
shell('composer update') :
shell('composer install')
)
})
// ======================================== Install app JS dependencies
gulp.task('install-app-js-libs', function () {
return gulp.src('.', {read: false}).pipe(
fs.existsSync('package-lock.json') ?
shell('npm ci') :
shell('npm install')
)
})
// ======================================== Install Source JS dependencies
gulp.task('install-source-js-libs', function () {
var cwd = process.cwd()
process.chdir('./vendor/pyrsmk/source-4')
var stream = gulp.src('.', {read: false}).pipe(
fs.existsSync('package-lock.json') ?
shell('npm ci') :
shell('npm install')
)
process.chdir(cwd)
return stream
})
// ======================================== Install Source Bower dependencies
gulp.task('install-source-bower-libs', function () {
var cwd = process.cwd()
process.chdir('./vendor/pyrsmk/source-4')
var stream = gulp.src('.', {read: false}).pipe(
shell('bower install')
)
process.chdir(cwd)
return stream
})
// ======================================== Process CSS files
gulp.task('process-css-files', function () {
return gulp.src('.', {read: false}).pipe(
shell('gulp css')
)
})
// ======================================== Process JS files
gulp.task('process-js-files', function () {
return gulp.src('.', {read: false}).pipe(
shell('gulp js')
)
})
// ======================================== Install
gulp.task('default', function (done) {
sequence(
'copy-template',
'install-app-php-libs',
'install-app-js-libs',
'install-source-js-libs',
'install-source-bower-libs',
'process-css-files',
'process-js-files',
done
)
})