diff --git a/README.md b/README.md index 6f4d8653..16ac0d4e 100644 --- a/README.md +++ b/README.md @@ -129,6 +129,7 @@ $ node-lambda deploy --help -A, --packageDirectory [] Local package directory -x, --excludeGlobs [] Add a space separated list of file(type)s to ignore (e.g. "*.json .env") -D, --prebuiltDirectory [] Prebuilt directory + -z, --deployZipfile [] Deploy zipfile ``` ## Custom Environment Variables diff --git a/bin/node-lambda b/bin/node-lambda index 9044c896..5e67f313 100755 --- a/bin/node-lambda +++ b/bin/node-lambda @@ -34,6 +34,7 @@ var EVENT_FILE = process.env.EVENT_FILE || 'event.json'; var PACKAGE_DIRECTORY = process.env.PACKAGE_DIRECTORY; var CONTEXT_FILE = process.env.CONTEXT_FILE || 'context.json'; var PREBUILT_DIRECTORY = process.env.PREBUILT_DIRECTORY || ''; +var DEPLOY_ZIPFILE = process.env.DEPLOY_ZIPFILE || ''; program .command('deploy') @@ -64,6 +65,7 @@ program .option('-x, --excludeGlobs [' + EXCLUDE_GLOBS + ']', 'Space-separated glob pattern(s) for additional exclude files (e.g. "event.json dotenv.sample")', EXCLUDE_GLOBS) .option('-D, --prebuiltDirectory [' + PREBUILT_DIRECTORY + ']', 'Prebuilt directory', PREBUILT_DIRECTORY) + .option('-z, --deployZipfile [' + DEPLOY_ZIPFILE + ']', 'Deploy zipfile', DEPLOY_ZIPFILE) .action(function (prg) { lambda.deploy(prg); }); diff --git a/lib/main.js b/lib/main.js index 852c876b..6d0d2a38 100644 --- a/lib/main.js +++ b/lib/main.js @@ -344,7 +344,18 @@ Lambda.prototype._uploadNew = function (lambda, params, cb) { }); }; +Lambda.prototype._readArchive = function (program, archive_callback) { + if (!fs.existsSync(program.deployZipfile)) { + var err = new Error('No such Zipfile [' + program.deployZipfile + ']'); + return archive_callback(err); + } + fs.readFile(program.deployZipfile, archive_callback); +}, + Lambda.prototype._archive = function (program, archive_callback) { + if (program.deployZipfile && fs.existsSync(program.deployZipfile)) { + return this._readArchive(program, archive_callback); + } return program.prebuiltDirectory ? this._archivePrebuilt(program, archive_callback) : this._buildAndArchive(program, archive_callback);