|
- /**
- * (c) by aheadware.com
- */
-
- /**
- * Prequisties:
- *
- * - destDir must exist
- * - tmpDir must exist
- * - remoteTmpDir must exist
- *
- * - node modules (global)
- * -- npm install async -g
- * https://caolan.github.io/async/index.html
- * -- npm install fs-extra -g
- * https://github.com/jprichardson/node-fs-extra
- * -- npm install ssh2 -g
- * https://www.npmjs.com/package/ssh2
- * -- npm install zip-folder -g
- * https://www.npmjs.com/package/zip-folder
- *
- *
- * General:
- *
- * zipName = 'probuddy_landing.zip';
- *
- *
- * Local:
- *
- * localTmpDir = 'C:/Users/Benny/Desktop/_SYSTEM/temp';
- *
- *
- * Server
- *
- * serverDestDir = '/www/htdocs/v034011/projects/probuddy/client/www';
- * serverTmpDir = '/www/htdocs/v034011/_temp';
- */
-
-
- const Client = require('ssh2').Client;
- const zipFolder = require('zip-folder');
- const fs = require ( 'fs' );
- const fsExtra = require( 'fs-extra' );
-
- // globals
- const zipName = 'probuddy-app-client.zip';
- const localTmpDir = 'C:/Users/Benny/Desktop/_SYSTEM/temp';
- const localPrjDir = 'C:/Users/Benny/Desktop/VC/probuddy/src/client/app';
- const serverDestDir = '/www/htdocs/v034011/projects/probuddy/client/app';
- const serverTmpDir = '/www/htdocs/v034011/_temp';
-
- function deploy()
- {
- var localCommands = [
- 'rd /S /Q ' + localTmpDir + '/probuddy-client-app',
- 'mkdir ' + localTmpDir + '/probuddy-client-app',
- 'xcopy /e ' + localPrjDir + ' ' + localTmpDir + '/probuddy-client-app'
- ];
-
- fsExtra.removeSync( localTmpDir + '/probuddy-client-app' );
- fsExtra.mkdirpSync( localTmpDir + '/probuddy-client-app' );
- fsExtra.copySync( localPrjDir, localTmpDir + '/probuddy-client-app' );
-
- zipFolder(
- localTmpDir + '/probuddy-client-app',
- localTmpDir + '/probuddy-client-app.zip',
- function(err)
- {
- if( err )
- {
- console.log('zipFolder failed with: ', err);
- }
- else
- {
- // Upload and decompress and remove zip
- var conn = new Client();
- conn.on('ready', function()
- {
-
- conn.sftp ( function( err, sftp )
- {
- if ( err ) throw err;
-
-
- // UPLOAD ZIP FILE
-
- var readStream = fs.createReadStream( localTmpDir + '/probuddy-client-app.zip', { encoding: 'binary'} );
- var writeStream = sftp.createWriteStream( serverTmpDir + '/probuddy-client-app.zip', { mode: 0o755, encoding: 'binary' } );
-
- writeStream.on('close',function ()
- {
- console.log( "- file transferred succesfully" );
-
- // DELETE OLD DIRECTORY
- conn.exec( 'rm -rf ' + serverDestDir + '/;md ' + serverDestDir, function( err, stream )
- //conn.exec( 'cd ' + serverDestDir + '/;ls -la', function( err, stream )
- {
- if ( err ) throw err;
-
- stream.on('data', function(data)
- {
- console.log('STDOUT: ' + data);
- });
-
- stream.stderr.on('data', function(data)
- {
- console.log('STDERR: ' + data);
- });
-
- stream.on('close', function(code, signal)
- {
- console.log('Process closed with code ' + code);
-
- // UNZIP NEW VERSION TO DESTINATION DIRECTORY
-
- conn.exec( 'cd ' + serverTmpDir + '/;unzip -o probuddy-client-app.zip -d ' + serverDestDir + '/;chmod -R 755 ' + serverDestDir + '/', function( err, stream )
- {
- if ( err ) throw err;
-
- stream.on('data', function(data)
- {
- console.log('STDOUT: ' + data);
- });
-
- stream.stderr.on('data', function(data)
- {
- console.log('STDERR: ' + data);
- });
-
- stream.on('close', function(code, signal)
- {
- console.log('Process closed with code ' + code);
-
- conn.sftp(function(err, sftp)
- {
- if (err) throw err;
-
- // REMOVE ZIP FILE
-
- sftp.unlink( serverTmpDir + '/probuddy-client-app.zip', function(err)
- {
- if ( err )
- {
- console.log( "Error, problem starting SFTP: %s", err );
- }
- else
- {
- console.log( "file unlinked" );
- process.exit( -1 );
- }
-
- //conn.close();
- });
-
- });
- });
- });
-
- });
- });
-
- });
-
- writeStream.on('end', function ()
- {
- console.log( "sftp connection closed" );
- conn.close();
- });
-
- // initiate transfer of file
- readStream.pipe( writeStream );
- });
- /*
- conn.exec( 'ls -lah', function( err, stream )
- {
- if ( err ) throw err;
-
- stream.on('data', function(data) {
- console.log('STDOUT: ' + data);
- });
- stream.stderr.on('data', function(data) {
- console.log('STDERR: ' + data);
- });
- stream.on('close', function(code, signal) {
- console.log('Process closed with code ' + code);
- });
- });
- */
-
- /*
- conn.sftp(function(err, sftp) {
- if (err) throw err;
- sftp.readdir('/www/htdocs/v034011/_temp', function(err, list) {
- if (err) throw err;
- console.dir(list);
- conn.end();
- });
- });
- */
- }).connect(
- {
- host: 'v034011.kasserver.com',
- port: 22,
- username: 'ssh-v034011',
- password: 'XXXXXXXXXXXX'
- });
- }
- });
- }
-
- deploy();
|