diff --git a/index.js b/index.js index 0d495c0..fa0eaa9 100644 --- a/index.js +++ b/index.js @@ -61,6 +61,14 @@ class SamPlugin { required: true, shortcut: 'o', }, + codeuri: { + usage: + 'Specify CodeUri for package ' + + '(e.g. "--codeuri s3://deploy-bucket/function.zip")', + required: false, + shortcut: 'u', + default: null + }, }, } } @@ -203,7 +211,7 @@ class SamPlugin { return new BbPromise((resolve, reject) => { this.serverless.cli.log('Export:'); try { - this.samTemplate = this.samGenerator.generate(); + this.samTemplate = this.samGenerator.generate(this.serverless.providers.aws.options.codeuri); resolve(this.samTemplate); } catch (err) { reject(err); diff --git a/lib/FunctionConverter.js b/lib/FunctionConverter.js index 9149811..18fcff0 100644 --- a/lib/FunctionConverter.js +++ b/lib/FunctionConverter.js @@ -30,9 +30,9 @@ class FunctionConverter { this.samBuilder = samBuilder; } - serverlessFunctionToSam(resourceName, serverlessFunction) { + serverlessFunctionToSam(resourceName, serverlessFunction, codeuri) { let lambdaHandler = serverlessFunction.handler; - let codeUri = this.serverless.service.package.artifact; + let codeUri = codeuri || this.serverless.service.package.artifact; // looks like this is not required. Commenting out for the time being /*if (!codeUri) { diff --git a/lib/SamGenerator.js b/lib/SamGenerator.js index 84b3d3b..65669bb 100644 --- a/lib/SamGenerator.js +++ b/lib/SamGenerator.js @@ -41,7 +41,7 @@ class SamGenerator { /** * Main entry point for the object that returns the generated SAM template as a string. */ - generate() { + generate(codeuri) { // 1. read custom resources this.readResources(this.serverless.service); @@ -55,7 +55,7 @@ class SamGenerator { this.readConditions(this.serverless.service); // 5. read functions - this.readFunctions(this.serverless.service); + this.readFunctions(this.serverless.service, codeuri); // 6. create yaml return this.dumpYamlTemplate(); @@ -102,7 +102,7 @@ class SamGenerator { }); } } - readFunctions(service) { + readFunctions(service, codeuri) { this.serverless.cli.log("Exporting functions"); let allFunctions = service.getAllFunctions(); if (allFunctions && allFunctions.length > 0) { @@ -116,7 +116,7 @@ class SamGenerator { this.serverless.cli.log('Exporting function: ' + functionName + ' as ' + functionResourceName); // uses the SamBuilder object behind the scenes to add functions and new custom resources - this.functionConverter.serverlessFunctionToSam(functionResourceName, sFunction); + this.functionConverter.serverlessFunctionToSam(functionResourceName, sFunction, codeuri); }); } }