From 62740cb17f4208031bdf6d854788bd907bc6c8e4 Mon Sep 17 00:00:00 2001 From: Sothos Date: Thu, 24 Mar 2016 15:59:32 -0600 Subject: [PATCH 1/2] Update ftp-deploy.js Modifies FtpCwd to create all subfolders in path if necessary --- tasks/ftp-deploy.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/tasks/ftp-deploy.js b/tasks/ftp-deploy.js index 17b2084..6aff25b 100644 --- a/tasks/ftp-deploy.js +++ b/tasks/ftp-deploy.js @@ -79,7 +79,11 @@ module.exports = function (grunt) { ftp.raw.mkd(inPath, function (err) { if(err) { log.error('Error creating new remote folder ' + inPath + ' --> ' + err); - cb(err); + log.ok('Trying to create all intermediary folders'); + inPath = inPath.replace(/[/]$/g, ""); // remove trailing "/" if present + var pathComponents = inPath.split("/"); + pathComponents[0] = pathComponents[0].replace(/^$/, "/"); // if path is absolute, first component should be "/" + ftpCwdPathComponents(pathComponents, cb); } else { log.ok('New remote folder created ' + inPath.yellow); ftpCwd(inPath, cb); @@ -91,6 +95,31 @@ module.exports = function (grunt) { }); } + function ftpCwdPathComponents (pathComponents, cb) { + var folder = pathComponents.shift(); + + ftp.raw.cwd(folder, function (err) { + if (err) { + ftp.raw.mkd(folder, function (err) { + if (err) { + log.error('Error creating new remote folder ' + folder + ' --> ' + err); + cb(err); + } else { + log.ok('New remote folder created ' + folder.yellow); + pathComponents.unshift(folder); + ftpCwdPathComponents(pathComponents, cb); + } + }) + } else { + if (pathComponents.length > 0) { + ftpCwdPathComponents(pathComponents, cb); + } else { + cb(null); + } + } + }) + } + // A method for uploading a single file function ftpPut (inFilename, done) { var fpath = path.normalize(localRoot + path.sep + currPath + path.sep + inFilename); From abe428515314ffafc002fb75aa0e5572ace25702 Mon Sep 17 00:00:00 2001 From: Sothos Date: Tue, 29 Mar 2016 13:14:38 -0600 Subject: [PATCH 2/2] Update ftp-deploy.js Better error-handling of invalid params --- tasks/ftp-deploy.js | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/tasks/ftp-deploy.js b/tasks/ftp-deploy.js index 6aff25b..c025535 100644 --- a/tasks/ftp-deploy.js +++ b/tasks/ftp-deploy.js @@ -96,28 +96,29 @@ module.exports = function (grunt) { } function ftpCwdPathComponents (pathComponents, cb) { - var folder = pathComponents.shift(); + if (!pathComponents || pathComponents.length === 0) { + cb(null); - ftp.raw.cwd(folder, function (err) { - if (err) { - ftp.raw.mkd(folder, function (err) { - if (err) { - log.error('Error creating new remote folder ' + folder + ' --> ' + err); - cb(err); - } else { - log.ok('New remote folder created ' + folder.yellow); - pathComponents.unshift(folder); - ftpCwdPathComponents(pathComponents, cb); - } - }) - } else { - if (pathComponents.length > 0) { - ftpCwdPathComponents(pathComponents, cb); + } else { + var folder = pathComponents.shift(); + + ftp.raw.cwd(folder, function (err) { + if (err) { + ftp.raw.mkd(folder, function (err) { + if (err) { + log.error('Error creating new remote folder ' + folder + ' --> ' + err); + cb(err); + } else { + log.ok('New remote folder created ' + folder.yellow); + pathComponents.unshift(folder); + ftpCwdPathComponents(pathComponents, cb); + } + }) } else { - cb(null); + ftpCwdPathComponents(pathComponents, cb); } - } - }) + }) + } } // A method for uploading a single file