/* ---------------------------------------------------------------------------- * Easy!Appointments - Open Source Web Scheduler * * @package EasyAppointments * @author A.Tselegidis * @copyright Copyright (c) 2013 - 2018, Alex Tselegidis * @license http://opensource.org/licenses/GPL-3.0 - GPLv3 * @link http://easyappointments.org * @since v1.4.0 * ---------------------------------------------------------------------------- */ const babel = require('gulp-babel'); const changed = require('gulp-changed'); const childProcess = require('child_process'); const css = require('gulp-clean-css'); const del = require('del'); const fs = require('fs-extra'); const gulp = require('gulp'); const plumber = require('gulp-plumber'); const rename = require('gulp-rename'); const sass = require('gulp-sass')(require('sass')); const uglify = require('gulp-uglify'); const zip = require('zip-dir'); function archive(done) { const filename = 'easyappointments-0.0.0.zip'; fs.removeSync('build'); fs.removeSync(filename); fs.mkdirsSync('build'); fs.copySync('application', 'build/application'); fs.copySync('assets', 'build/assets'); fs.copySync('system', 'build/system'); fs.ensureDirSync('build/storage/backups'); fs.copySync('storage/backups/.htaccess', 'build/storage/backups/.htaccess'); fs.copySync('storage/backups/index.html', 'build/storage/backups/index.html'); fs.ensureDirSync('build/storage/cache'); fs.copySync('storage/cache/index.html', 'build/storage/cache/index.html'); fs.copySync('storage/cache/.htaccess', 'build/storage/cache/.htaccess'); fs.ensureDirSync('build/storage/logs'); fs.copySync('storage/logs/.htaccess', 'build/storage/logs/.htaccess'); fs.copySync('storage/logs/index.html', 'build/storage/logs/index.html'); fs.ensureDirSync('build/storage/sessions'); fs.copySync('storage/sessions/.htaccess', 'build/storage/sessions/.htaccess'); fs.copySync('storage/sessions/index.html', 'build/storage/sessions/index.html'); fs.ensureDirSync('build/storage/uploads'); fs.copySync('storage/uploads/index.html', 'build/storage/uploads/index.html'); fs.copySync('index.php', 'build/index.php'); fs.copySync('composer.json', 'build/composer.json'); fs.copySync('composer.lock', 'build/composer.lock'); fs.copySync('config-sample.php', 'build/config-sample.php'); fs.copySync('CHANGELOG.md', 'build/CHANGELOG.md'); fs.copySync('README.md', 'build/README.md'); fs.copySync('LICENSE', 'build/LICENSE'); childProcess.execSync('cd build && composer install --no-interaction --no-dev --no-scripts --optimize-autoloader'); del.sync('**/.DS_Store'); fs.removeSync('build/composer.lock'); del.sync('**/.DS_Store'); del.sync('build/vendor/codeigniter/framework/user_guide'); zip('build', {saveTo: filename}, function (error) { if (error) { console.log('Zip Error', error); } done(); }); } function clean(done) { fs.removeSync('assets/js/**/*.min.js'); fs.removeSync('assets/css/**/*.min.css'); done(); } function scripts() { return ( gulp .src(['assets/js/**/*.js', '!assets/js/**/*.min.js']) .pipe(plumber()) .pipe(changed('assets/js/**/*')) .pipe(babel()) // .pipe(uglify().on('error', console.log)) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('assets/js')) ); } function styles() { return gulp .src(['assets/css/**/*.scss', '!assets/css/**/*.min.css']) .pipe(plumber()) .pipe(changed('assets/css/**/*')) .pipe(sass().on('error', sass.logError)) .pipe(gulp.dest('assets/css')) .pipe(css()) .pipe(rename({suffix: '.min'})) .pipe(gulp.dest('assets/css')); } function watch(done) { gulp.watch(['assets/js/**/*.js', '!assets/js/**/*.min.js'], gulp.parallel(scripts)); gulp.watch(['assets/css/**/*.css', '!assets/css/**/*.min.css'], gulp.parallel(styles)); done(); } exports.clean = gulp.series(clean); exports.scripts = gulp.series(clean, scripts); exports.styles = gulp.series(clean, styles); exports.dev = gulp.series(clean, scripts, styles, watch); exports.build = gulp.series(clean, scripts, styles, archive); exports.default = exports.dev;