Updated the gulp flow (simplified tasks).

This commit is contained in:
Alex Tselegidis 2020-03-11 13:24:23 +01:00
parent d709028eca
commit afd0323571
16 changed files with 177 additions and 630 deletions

2
.gitignore vendored
View File

@ -25,4 +25,4 @@
/!storage/uploads/index.html
/vendor/
/metafile
/**/.DS_Store
.DS_Store

View File

@ -627,7 +627,7 @@ window.GeneralFunctions = window.GeneralFunctions || {};
* @returns {string} The rendered HTML.
*/
exports.renderMapIcon = function (user) {
const data = [];
var data = [];
if (user.address) {
data.push(user.address);

View File

@ -1,17 +1,8 @@
{
"name": "alextselegidis/easyappointments",
"description": "Open Source Web Scheduler",
"keywords": [
"calendar",
"scheduler",
"appointments",
"events",
"dates",
"google",
"services"
],
"type": "project",
"homepage": "https://easyappointments.org",
"type": "project",
"license": "GPL-3.0",
"authors": [
{
@ -25,6 +16,15 @@
"wiki": "https://easyappointments.org/docs",
"source": "https://github.com/alextselegidis/easyappointments"
},
"keywords": [
"calendar",
"scheduler",
"appointments",
"events",
"dates",
"google",
"services"
],
"minimum-stability": "stable",
"autoload": {
"psr-4": {
@ -36,6 +36,7 @@
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"ext-gd": "*",
"gregwar/captcha": "^1.1",
"phpmailer/phpmailer": "^5.2",
"codeigniter/framework": "^3.1.6",
@ -45,5 +46,8 @@
"require-dev": {
"roave/security-advisories": "dev-master",
"phpunit/phpunit": "^7.4"
},
"scripts": {
"test": "php vendor/bin/phpunit tests"
}
}

View File

@ -11,25 +11,142 @@
// Gulp instance and plugins.
const gulp = require('gulp');
const fs = require('fs-extra');
const zip = require('zip-dir');
const plugins = require('gulp-load-plugins')();
const {execSync} = require('child_process');
// Gulp error handling.
const source = gulp.src;
gulp.src = function() {
gulp.src = function () {
return source.apply(gulp, arguments)
.pipe(plugins.plumber({
errorHandler: plugins.notify.onError('Error: <%= error.message %>')
}));
};
// Define gulp tasks.
gulp.task('build', require('./tools/gulp/build')(gulp, plugins));
gulp.task('clean', require('./tools/gulp/clean')(gulp, plugins));
gulp.task('composer', require('./tools/gulp/composer')(gulp, plugins));
gulp.task('dev', require('./tools/gulp/dev')(gulp, plugins));
gulp.task('docs', require('./tools/gulp/docs')(gulp, plugins));
gulp.task('scripts', require('./tools/gulp/scripts')(gulp, plugins));
gulp.task('styles', require('./tools/gulp/styles')(gulp, plugins));
gulp.task('tests', require('./tools/gulp/tests')(gulp, plugins));
gulp.task('watch', require('./tools/gulp/watch')(gulp, plugins));
gulp.task('build', (done) => {
const archive = 'easyappointments-0.0.0.zip';
fs.removeSync('build');
fs.removeSync(archive);
fs.mkdirsSync('build');
fs.copySync('application', 'build/application');
fs.copySync('assets', 'build/assets');
fs.copySync('engine', 'build/engine');
fs.copySync('storage', 'build/storage');
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');
execSync('cd build && composer install --no-dev --no-interaction --no-scripts --optimize-autoloader', function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
});
fs.removeSync('build/composer.json');
fs.removeSync('build/composer.lock');
fs.removeSync('build/storage/uploads/*');
fs.removeSync('!build/storage/uploads/index.html');
fs.removeSync('build/storage/logs/*');
fs.removeSync('!build/storage/logs/index.html');
fs.removeSync('build/storage/sessions/*');
fs.removeSync('!build/storage/sessions/.htaccess');
fs.removeSync('!build/storage/sessions/index.html');
fs.removeSync('build/storage/cache/*');
fs.removeSync('!build/storage/cache/.htaccess');
fs.removeSync('!build/storage/cache/index.html');
zip('build', {saveTo: archive}, function (err) {
if (err)
console.log('Zip Error', err);
done();
});
});
gulp.task('clean', (done) => {
fs.removeSync('assets/js/**/*.min.js');
fs.removeSync('assets/css/**/*.min.css');
done();
});
gulp.task('docs', (done) => {
fs.removeSync('docs/apigen/html');
fs.removeSync('docs/jsdoc/html');
fs.removeSync('docs/plato/html');
fs.mkdirSync('docs/apigen/html');
fs.mkdirSync('docs/jsdoc/html');
fs.mkdirSync('docs/plato/html');
const commands = [
'php docs/apigen/apigen.phar generate ' +
'-s "application/controllers,application/models,application/libraries" ' +
'-d "docs/apigen/html" --exclude "*external*" --tree --todo --template-theme "bootstrap"',
'npx jsdoc "assets/js" -d "docs/jsdoc/html"',
'npx plato -r -d "docs/plato/html" "assets/js"'
];
commands.forEach(function (command) {
execSync(command, function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
});
});
done();
});
gulp.task('scripts', (done) => {
gulp.src([
'assets/js/**/*.js',
'!assets/js/**/*.min.js'
])
.pipe(plugins.changed('assets/js/**/*'))
.pipe(plugins.uglify().on('error', plugins.util.log))
.pipe(plugins.rename({suffix: '.min'}))
.pipe(gulp.dest('assets/js'));
done();
});
gulp.task('styles', (done) => {
gulp.src([
'assets/css/**/*.css',
'!assets/css/**/*.min.css'
])
.pipe(plugins.changed('assets/css/**/*'))
.pipe(plugins.cleanCss())
.pipe(plugins.rename({suffix: '.min'}))
.pipe(gulp.dest('assets/css'));
done();
});
gulp.task('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();
});
gulp.task('dev', gulp.series('clean', 'scripts', 'styles', 'watch'));
gulp.task('default', gulp.parallel('dev'));

293
package-lock.json generated
View File

@ -184,12 +184,6 @@
"integrity": "sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0=",
"dev": true
},
"array-differ": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz",
"integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=",
"dev": true
},
"array-each": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
@ -418,12 +412,6 @@
}
}
},
"beeper": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz",
"integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=",
"dev": true
},
"binary-extensions": {
"version": "1.13.1",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
@ -707,24 +695,12 @@
"wrap-ansi": "^2.0.0"
}
},
"clone": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz",
"integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=",
"dev": true
},
"clone-buffer": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz",
"integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=",
"dev": true
},
"clone-stats": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz",
"integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=",
"dev": true
},
"cloneable-readable": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz",
@ -957,12 +933,6 @@
"integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=",
"dev": true
},
"dateformat": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
"integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=",
"dev": true
},
"datejs": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/datejs/-/datejs-0.0.2.tgz",
@ -1176,15 +1146,6 @@
"domelementtype": "1"
}
},
"duplexer2": {
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz",
"integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
"dev": true,
"requires": {
"readable-stream": "~1.1.9"
}
},
"duplexify": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
@ -2960,73 +2921,6 @@
"integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==",
"dev": true
},
"gulp-shell": {
"version": "0.6.5",
"resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.6.5.tgz",
"integrity": "sha512-f3m1WcS0o2B72/PGj1Jbv9zYR9rynBh/EQJv64n01xQUo7j7anols0eww9GG/WtDTzGVQLrupVDYkifRFnj5Zg==",
"dev": true,
"requires": {
"async": "^2.1.5",
"chalk": "^2.3.0",
"fancy-log": "^1.3.2",
"lodash": "^4.17.4",
"lodash.template": "^4.4.0",
"plugin-error": "^0.1.2",
"through2": "^2.0.3"
},
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
"color-convert": "^1.9.0"
}
},
"async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz",
"integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==",
"dev": true,
"requires": {
"lodash": "^4.17.10"
}
},
"chalk": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
"supports-color": "^5.3.0"
}
},
"lodash": {
"version": "4.17.11",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
"dev": true
},
"supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
"has-flag": "^3.0.0"
}
}
}
},
"gulp-sync": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/gulp-sync/-/gulp-sync-0.1.4.tgz",
"integrity": "sha1-IuuVKPlXN9RxXAEnIYCgjyQTPbU=",
"dev": true
},
"gulp-uglify": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.2.tgz",
@ -3072,73 +2966,6 @@
}
}
},
"gulp-util": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz",
"integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
"dev": true,
"requires": {
"array-differ": "^1.0.0",
"array-uniq": "^1.0.2",
"beeper": "^1.0.0",
"chalk": "^1.0.0",
"dateformat": "^2.0.0",
"fancy-log": "^1.1.0",
"gulplog": "^1.0.0",
"has-gulplog": "^0.1.0",
"lodash._reescape": "^3.0.0",
"lodash._reevaluate": "^3.0.0",
"lodash._reinterpolate": "^3.0.0",
"lodash.template": "^3.0.0",
"minimist": "^1.1.0",
"multipipe": "^0.1.2",
"object-assign": "^3.0.0",
"replace-ext": "0.0.1",
"through2": "^2.0.0",
"vinyl": "^0.5.0"
},
"dependencies": {
"lodash.template": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz",
"integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
"dev": true,
"requires": {
"lodash._basecopy": "^3.0.0",
"lodash._basetostring": "^3.0.0",
"lodash._basevalues": "^3.0.0",
"lodash._isiterateecall": "^3.0.0",
"lodash._reinterpolate": "^3.0.0",
"lodash.escape": "^3.0.0",
"lodash.keys": "^3.0.0",
"lodash.restparam": "^3.0.0",
"lodash.templatesettings": "^3.0.0"
}
},
"lodash.templatesettings": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz",
"integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
"dev": true,
"requires": {
"lodash._reinterpolate": "^3.0.0",
"lodash.escape": "^3.0.0"
}
},
"object-assign": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz",
"integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=",
"dev": true
},
"replace-ext": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
"integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
"dev": true
}
}
},
"gulplog": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz",
@ -3959,98 +3786,12 @@
}
}
},
"lodash._basecopy": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz",
"integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=",
"dev": true
},
"lodash._basetostring": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz",
"integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=",
"dev": true
},
"lodash._basevalues": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz",
"integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=",
"dev": true
},
"lodash._getnative": {
"version": "3.9.1",
"resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
"integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=",
"dev": true
},
"lodash._isiterateecall": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz",
"integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=",
"dev": true
},
"lodash._reescape": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz",
"integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=",
"dev": true
},
"lodash._reevaluate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz",
"integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=",
"dev": true
},
"lodash._reinterpolate": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=",
"dev": true
},
"lodash._root": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz",
"integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=",
"dev": true
},
"lodash.escape": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz",
"integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
"dev": true,
"requires": {
"lodash._root": "^3.0.0"
}
},
"lodash.isarguments": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
"integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=",
"dev": true
},
"lodash.isarray": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
"integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
"dev": true
},
"lodash.keys": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
"integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
"dev": true,
"requires": {
"lodash._getnative": "^3.0.0",
"lodash.isarguments": "^3.0.0",
"lodash.isarray": "^3.0.0"
}
},
"lodash.restparam": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz",
"integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=",
"dev": true
},
"lodash.template": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz",
@ -4276,12 +4017,6 @@
"sigmund": "~1.0.0"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
"dev": true
},
"mixin-deep": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz",
@ -4331,15 +4066,6 @@
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"multipipe": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz",
"integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=",
"dev": true,
"requires": {
"duplexer2": "0.0.2"
}
},
"mute-stdout": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
@ -6307,25 +6033,6 @@
"integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=",
"dev": true
},
"vinyl": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz",
"integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
"dev": true,
"requires": {
"clone": "^1.0.0",
"clone-stats": "^0.0.1",
"replace-ext": "0.0.1"
},
"dependencies": {
"replace-ext": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz",
"integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=",
"dev": true
}
}
},
"vinyl-fs": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz",

View File

@ -1,44 +1,27 @@
{
"name": "easyappointments",
"description": "Open Source Web Scheduler",
"homepage": "https://easyappointments.org",
"author": "A.Tselegidis <alextselegidis@gmail.com>",
"license": "GPL-3.0",
"keywords": [
"calendar",
"scheduler",
"appointments",
"events",
"dates",
"google",
"services"
],
"repository": {
"type": "git",
"url": "git+https://github.com/alextselegidis/easyappointments.git"
},
"keywords": [
"php",
"javascript",
"mysql",
"html"
],
"author": "A.Tselegidis <alextselegidis@gmail.com>",
"license": "GPL-3.0",
"bugs": {
"url": "https://github.com/alextselegidis/easyappointments/issues"
},
"homepage": "http://easyappointments.org",
"devDependencies": {
"del": "^2.2.0",
"fs-extra": "^0.26.3",
"gulp": "^4.0.2",
"gulp-changed": "^3.2.0",
"gulp-clean-css": "^3.10.0",
"gulp-debug": "^4.0.0",
"gulp-load-plugins": "^1.6.0",
"gulp-notify": "^3.2.0",
"gulp-plumber": "^1.2.1",
"gulp-rename": "^1.4.0",
"gulp-shell": "^0.6.5",
"gulp-sync": "^0.1.4",
"gulp-uglify": "^3.0.2",
"gulp-util": "^3.0.8",
"jsdoc": "^3.6.2",
"node-notifier": "^5.4.0",
"plato": "^1.5.0",
"zip-dir": "^1.0.0"
},
"engines": {
"node": ">=0.12"
"node": ">=10"
},
"dependencies": {
"bootstrap": "^3.4.1",
@ -53,10 +36,25 @@
"sticky-table-headers": "^0.1.24",
"trumbowyg": "^2.18.0"
},
"devDependencies": {
"fs-extra": "^0.26.3",
"gulp": "^4.0.2",
"gulp-changed": "^3.2.0",
"gulp-clean-css": "^3.10.0",
"gulp-debug": "^4.0.0",
"gulp-load-plugins": "^1.6.0",
"gulp-notify": "^3.2.0",
"gulp-plumber": "^1.2.1",
"gulp-rename": "^1.4.0",
"gulp-uglify": "^3.0.2",
"jsdoc": "^3.6.2",
"node-notifier": "^5.4.0",
"plato": "^1.5.0",
"zip-dir": "^1.0.0"
},
"scripts": {
"start": "gulp",
"build": "gulp build",
"docs": "gulp docs",
"tests": "gulp tests"
"start": "npx gulp",
"build": "npx gulp build",
"docs": "npx gulp docs"
}
}

View File

@ -13,6 +13,5 @@
// Bootstrap Easy!Appointments PHPUnit Tests
require_once __DIR__ . '/../../src/config.php';
require_once __DIR__ . '/../../src/autoload.php';
require_once __DIR__ . '/../../config.php';
require_once __DIR__ . '/../../vendor/autoload.php';

View File

@ -1,58 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @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 del = require('del');
const fs = require('fs-extra');
const zip = require('zip-dir');
module.exports = (gulp, plugins) => {
return (done) => {
del.sync([
'build',
'easyappointments-0.0.0.zip'
]);
fs.copySync('src', 'build');
fs.removeSync('build/config.php');
fs.copySync('CHANGELOG.md', 'build/CHANGELOG.md');
fs.copySync('README.md', 'build/README.md');
fs.copySync('LICENSE', 'build/LICENSE');
del.sync([
'build/storage/uploads/*',
'!build/storage/uploads/index.html'
]);
del.sync([
'build/storage/logs/*',
'!build/storage/logs/index.html'
]);
del.sync([
'build/storage/sessions/*',
'!build/storage/sessions/.htaccess',
'!build/storage/sessions/index.html'
]);
del.sync([
'build/storage/cache/*',
'!build/storage/cache/.htaccess',
'!build/storage/cache/index.html'
]);
zip('build', {saveTo: 'easyappointments-0.0.0.zip'}, function (err, buffer) {
if (err)
console.log('Zip Error', err);
done();
});
};
};

View File

@ -1,21 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @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 del = require('del');
module.exports = (gulp, plugins) => {
return () => {
del.sync([
'src/assets/js/**/*.min.js',
'src/assets/css/**/*.min.css'
])
};
};

View File

@ -1,45 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @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 del = require('del');
/**
* Install and copy the required files from the "vendor" directory.
*
* Composer needs to be installed and configured in order for this command to
* work properly.
*/
module.exports = (gulp, plugins) => {
return () => {
del.sync([
'./src/vendor/**/*',
'!./src/vendor/index.html'
]);
return gulp.src([
'vendor/**/*',
'!vendor/**/{demo,docs,doc,fixtures,examples,test,tests,extras,language,license,LICENSE}{,/**}',
'!vendor/**/{composer.json,composer.lock,.gitignore}',
'!vendor/**/{*.yml,*.xml,*.md,*phpunit*,*.mdown}',
'!vendor/bin{,/**}',
'!vendor/codeigniter{,/**}',
'!vendor/doctrine{,/**}',
'!vendor/phpdocumentor{,/**}',
'!vendor/phpspec{,/**}',
'!vendor/phpunit{,/**}',
'!vendor/sebastian{,/**}',
'!vendor/symfony{,/**}',
'!vendor/phar-io{,/**}',
'!vendor/webmozart{,/**}'
])
.pipe(gulp.dest('./src/vendor/'));
};
};

View File

@ -1,20 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.4.0
* ---------------------------------------------------------------------------- */
module.exports = (gulp, plugins) => {
const task = require('gulp-sync')(gulp);
return () => {
gulp.start(task.sync(['clean', 'scripts', 'styles', 'watch']), 'dev');
};
};

View File

@ -1,47 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @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 exec = require('child_process').execSync;
const fs = require('fs-extra');
const path = require('path');
/**
* Generate code documentation.
*/
module.exports = (gulp, plugins) => {
return (done) => {
fs.removeSync('docs/apigen/html');
fs.mkdirSync('docs/apigen/html');
fs.removeSync('docs/jsdoc/html');
fs.mkdirSync('docs/jsdoc/html');
fs.removeSync('docs/plato/html');
fs.mkdirSync('docs/plato/html');
const commands = [
'php docs/apigen/apigen.phar generate ' +
'-s "src/application/controllers,src/application/models,src/application/libraries" ' +
'-d "docs/apigen/html" --exclude "*external*" --tree --todo --template-theme "bootstrap"',
path.join('.', 'node_modules', '.bin', 'jsdoc') + ' "src/assets/js" -d "docs/jsdoc/html"',
path.join('.', 'node_modules', '.bin', 'plato') + ' -r -d "docs/plato/html" "src/assets/js"'
];
commands.forEach(function (command) {
exec(command, function (err, stdout, stderr) {
console.log(stdout);
console.log(stderr);
});
});
done();
};
};

View File

@ -1,24 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.4.0
* ---------------------------------------------------------------------------- */
module.exports = (gulp, plugins) => {
return () => {
gulp.src([
'src/assets/js/**/*.js',
'!src/assets/js/**/*.min.js'
])
.pipe(plugins.changed('src/assets/js/**/*'))
.pipe(plugins.uglify().on('error', plugins.util.log))
.pipe(plugins.rename({suffix: '.min'}))
.pipe(gulp.dest('src/assets/js'));
};
};

View File

@ -1,23 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.4.0
* ---------------------------------------------------------------------------- */
module.exports = (gulp, plugins) => {
return () => {
gulp.src([
'src/assets/css/**/*.css',
'!src/assets/css/**/*.min.css'
])
.pipe(plugins.changed('src/assets/css/**/*'))
.pipe(plugins.cleanCss())
.pipe(plugins.rename({suffix: '.min'}))
.pipe(gulp.dest('src/assets/css'));
};
};

View File

@ -1,16 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.4.0
* ---------------------------------------------------------------------------- */
module.exports = (gulp, plugins) => {
return () => {
plugins.util.log('Not implemented yet.');
};
};

View File

@ -1,24 +0,0 @@
/* ----------------------------------------------------------------------------
* Easy!Appointments - Open Source Web Scheduler
*
* @package EasyAppointments
* @author A.Tselegidis <alextselegidis@gmail.com>
* @copyright Copyright (c) 2013 - 2018, Alex Tselegidis
* @license http://opensource.org/licenses/GPL-3.0 - GPLv3
* @link http://easyappointments.org
* @since v1.4.0
* ---------------------------------------------------------------------------- */
module.exports = (gulp, plugins) => {
return () => {
gulp.watch([
'src/assets/js/**/*.js',
'!src/assets/js/**/*.min.js'
], ['scripts']);
gulp.watch([
'src/assets/css/**/*.css',
'!src/assets/css/**/*.min.css'
], ['styles']);
};
};