Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- /**
- * Simple deployment script.
- *
- * Run it through:
- * $ npm run deploy
- *
- * Note that the script will add all files to remote server without doing diffs
- * or anything. It behaves pretty much like rsync.
- *
- * It accepts file ignoring through wildcards, which might come in handy:
- * $ npm run deploy -- -i '*.jpg' # Do not deploy .jpg files
- **/
- const argv = require('yargs').alias('i', 'ignore').argv;
- const figures = require('figures');
- const chalk = require('chalk');
- const logUpdate = require('log-update');
- const FTPDeploy = require('ftp-deploy');
- const deployer = new FTPDeploy();
- const options = require('../options.json');
- const ignore = argv.ignore ? argv.ignore.split(',') : [];
- let settings = {
- username: options.credentials.username,
- password: options.credentials.password,
- host: options.host,
- port: 21,
- localRoot: options.localFolder,
- remoteRoot: options.remoteFolder,
- continueOnError: true,
- exclude: ['.git', '.keep', '.DS_Store'].concat(ignore)
- };
- let log = {};
- let interval = 0;
- let hasStarted = false;
- // Start deployment
- const start = () => {
- hasStarted = true;
- prompt('Deploy started');
- // Freezes `stdout` and update log with deploy information
- interval = setInterval(() => {
- logUpdate(`${chalk.green(figures.pointer)} Uploaded ${chalk.bold(log.transferredFileCount)} of ${chalk.bold(log.totalFileCount)} files (${log.percentComplete}% complete)
- ${chalk.underline(log.filename)}`);
- }, 250);
- };
- // Helper to prompt a fancy message to `stdout`
- const prompt = message => {
- console.log(`${chalk.green(figures.pointer)} ${message}`);
- };
- prompt('Connecting to server...');
- deployer.deploy(settings, error => {
- // Failure
- if(error) throw error;
- // Success
- clearInterval(interval);
- prompt(`Successfully deployed ${figures.tick}`);
- });
- deployer.on('uploading', data => {
- if(!hasStarted) start();
- // Save data to a local variable so we can easily use it w/ logUpdate
- log = data;
- });
- // Notifies bad upload
- deployer.on('upload-error', data => {
- console.error(`${chalk.red(figures.warning)} Problem uploading file "${data.filename}"`);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement