UNPKG

boilerplate.js

Version:

Development Tools

243 lines (201 loc) 8.71 kB
global.deploy = { username: 'root', server: '11.222.33.44', branchName: child.execSync("git rev-parse --abbrev-ref HEAD").toString().trim().toLowerCase(), domain: 'example.com', subdomain: 'main', getPath: () => deploy.isProd() ? deploy.main() : deploy.branch(), main: () => `/var/www/domains/${deploy.domain}/laravel/${deploy.subdomain}`, branch: () => `/var/www/domains/${deploy.domain}/laravel/${deploy.subdomain}-beta`, remote: { folder: (cmd) => child.execSync(`ssh ${deploy.username}@${deploy.server} "cd ${deploy.getPath()} && ${cmd}"`), fn: (cmd) => child.execSync(`ssh ${deploy.username}@${deploy.server} "${cmd}"`) }, local: (cmd) => child.execSync(`${cmd}`), getURL: () => { if ( deploy.isProd() ) { return deploy.subdomain === 'main' ? `https://${deploy.domain}` : `http://${deploy.subdomain}.${deploy.domain}`; } else { return `http://${deploy.subdomain}-beta.${deploy.domain}`; } }, isProd: () => process.argv.indexOf('--prod') >= 0 ? true : false, list: { all: () => { console.log('Getting List Of ALL Files To Transfer'.yellow); // var filesToCopy = child.execSync('git ls-files && git ls-files --exclude-standard --others && git ls-files --other --ignored --exclude-standard vendor/').toString(); var filesToCopy = child.execSync('git ls-files && git ls-files --exclude-standard --others').toString(); fs.writeFileSync('./list.txt', filesToCopy); }, modified: () => { console.log('Getting List Of MODIFIED Files To Transfer'.yellow); var filesToCopy = child.execSync('git diff --name-only').toString(); fs.writeFileSync('./list.txt', filesToCopy); }, commits: (number = 3) => { console.log(`Getting List Of Files From Last ${number} Commits`.yellow); var filesToCopy = child.execSync(`git diff --name-only HEAD~${number} --diff-filter=d`).toString(); fs.writeFileSync('./list.txt', filesToCopy); }, delete: () => { child.execSync(`rm list.txt`); } }, init: () => { console.log(''); if (!deploy.isProd()) { console.log('Copying .env file'.grey); deploy.local(`scp .env ${deploy.username}@${deploy.server}:${deploy.getPath()}`); } console.log('Running "php artisan config:clear"'.grey); deploy.remote.folder(`php artisan config:clear`); console.log('Running "php artisan cache:clear"'.grey); deploy.remote.folder(`php artisan cache:clear`); console.log('Running "php artisan view:clear"'.grey); deploy.remote.folder(`php artisan view:clear`); console.log('Running "php artisan storage:link"'.grey); try { deploy.remote.folder(`php artisan storage:link`); } catch (error) {} console.log('Running "php artisan key:generate"'.grey); deploy.remote.folder(`php artisan key:generate`); console.log('Running "composer dump-autoload"'.grey); deploy.remote.folder(`composer dump-autoload`); console.log(`Setting Permissions`.gray); deploy.remote.folder(`chown -R $USER:www-data storage`); deploy.remote.folder(`chown -R $USER:www-data bootstrap/cache`); deploy.remote.folder(`chmod -R 775 storage`); deploy.remote.folder(`chmod -R 775 bootstrap/cache`); deploy.remote.folder(`touch init.confirm`); } }; gulp.task('deploy:vendor', function () { let path = deploy.getPath(); deploy.remote.fn(`mkdir -p ${path}`); console.log(''); console.log(`Zipping Vendor Folder`.gray); deploy.local(`tar -zcvf vendor.tar.gz vendor/`); console.log(`Uploading Vendor Folder`.yellow); deploy.remote.fn(`mkdir -p ${path}/vendor`); deploy.local(`scp vendor.tar.gz ${deploy.username}@${deploy.server}:${path}`); console.log(`Extracting Vendor Folder`); deploy.remote.folder(`tar -xzvf vendor.tar.gz`); console.log(`Cleaning Up`.red); deploy.remote.folder(`sudo rm vendor.tar.gz`); deploy.local(`rm vendor.tar.gz`); console.log(`Vendor Folder Deployed!`.green); console.log(`${path}`.black.bgWhite); console.log(''); }); gulp.task('deploy', function () { try { deploy.remote.folder('cat init.confirm'); gulp.start('deploy:changes'); } catch (error) { gulp.start('deploy:vendor'); gulp.start('deploy:files'); deploy.init(); } }); gulp.task('deploy:files', function () { let path = deploy.getPath(); deploy.remote.fn(`mkdir -p ${path}`); console.log(''); deploy.list.all(); deploy.local(`tar -zcvf all.tar.gz -T list.txt`); console.log(`Uploading Files`.yellow); deploy.local(`scp all.tar.gz ${deploy.username}@${deploy.server}:${path}`); console.log(`Extracting...`); deploy.remote.folder(`tar -xzvf all.tar.gz`); console.log(`Cleaning Up`.red); deploy.remote.folder(`sudo rm all.tar.gz`); deploy.local(`rm all.tar.gz`); deploy.list.delete(); console.log('Done!'.green); console.log(''); console.log(deploy.getURL().black.bgWhite); console.log(`${path}`.gray); console.log(''); }); gulp.task('deploy:cache', function () { console.log(''); deploy.local.fn(`tar -zcvf cache.tar.gz storage/app/public/cache`); console.log(`Uploading Cache`.yellow); deploy.local.fn(`scp cache.tar.gz ${deploy.username}@${deploy.server}:/var/www/domains/borntodie007.tk/laravel/${deploy.branchName}/`); console.log(`Extracting...`); deploy.remote.folder(`tar -xzvf cache.tar.gz`); console.log(`Cleaning Up`.red); deploy.remote.folder(`sudo rm cache.tar.gz`); deploy.local.fn(`rm cache.tar.gz`); console.log('Done!'.green); console.log(''); }); gulp.task('deploy:changes', function () { let path = deploy.getPath(); deploy.remote.fn(`mkdir -p ${path}`); console.log(''); deploy.list.commits(1); deploy.local.fn(`tar -zcvf commits.tar.gz -T list.txt`); console.log(`Uploading Files`.yellow); deploy.local.fn(`scp commits.tar.gz ${deploy.username}@${deploy.server}:${path}`); console.log(`Extracting...`); deploy.remote.folder(`tar -xzvf commits.tar.gz`); console.log(`Cleaning Up`.red); deploy.remote.folder(`sudo rm commits.tar.gz`); deploy.local.fn(`rm commits.tar.gz`); deploy.list.delete(); console.log('Done!'.green); console.log(''); console.log(deploy.getURL().black.bgWhite); console.log(`${path}`.gray); console.log(''); }); gulp.task('deploy:current', function () { console.log(''); deploy.list.commits(2); deploy.local.fn(`tar -zcvf commits.tar.gz -T list.txt`); console.log(`Uploading Files`.yellow); deploy.remote.fn(`mkdir -p /var/www/domains/borntodie007.tk/laravel/${deploy.branchName}`); deploy.local.fn(`scp commits.tar.gz ${deploy.username}@${deploy.server}:/var/www/domains/borntodie007.tk/laravel/${deploy.branchName}/`); console.log(`Extracting...`); deploy.remote.folder(`tar -xzvf commits.tar.gz`); console.log(`Cleaning Up`.red); deploy.remote.folder(`sudo rm commits.tar.gz`); deploy.local.fn(`rm commits.tar.gz`); deploy.list.delete(); console.log('Done!'.green); console.log(''); console.log(deploy.getURL().black.bgWhite); console.log(`${path}`.gray); console.log(''); }); gulp.task('deploy:delete', function () { console.log(`Deleting ${deploy.getPath()}`.red); deploy.remote.fn(`sudo rm -rf ${deploy.getPath()}`); console.log(`${deploy.getPath()} Deleted!`.green); }); gulp.task('deploy:init', function () { deploy.init(); }); gulp.task('deploy:fresh', function () { gulp.start('deploy:delete'); gulp.start('deploy'); }); gulp.task('watch:js:after', function() { gulp.start('deploy'); }); gulp.task('watch:deploy', function() { config.watch.js.after = true; config.watch.css.after = false; gulp.start('watch'); }); function env(name) { name = name.toLowerCase(); var fs = require('fs'); var file = fs.readFileSync('./.env').toString(); var found = null; file.split('\n').forEach(line => { if (line.toLowerCase().indexOf(name) >= 0) { found = line.split('=')[1]; } }); return found.trim(); }