From 9e8138abfd68f6f3274cafeb38feb6f59dca5752 Mon Sep 17 00:00:00 2001 From: John McKim Date: Fri, 5 Aug 2016 08:43:37 +1000 Subject: [PATCH] move variableSyntax into defaults and update docs --- docs/understanding-serverless/serverless-yml.md | 1 + lib/classes/Service.js | 16 ++++++++++------ tests/classes/Service.js | 12 +++++++++--- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/docs/understanding-serverless/serverless-yml.md b/docs/understanding-serverless/serverless-yml.md index d94d04a3c..7d21c7fe5 100644 --- a/docs/understanding-serverless/serverless-yml.md +++ b/docs/understanding-serverless/serverless-yml.md @@ -19,6 +19,7 @@ plugins: defaults: # overwrite defaults stage: dev region: us-east-1 + variableSyntax: '\${{([\s\S]+?)}}' # change variable syntax to ${{foo}} package: # only the following paths will be included in the resulting artifact which will be uploaded. Without specific include everything in the current folder will be included diff --git a/lib/classes/Service.js b/lib/classes/Service.js index 5e5d2774c..c10abae4b 100644 --- a/lib/classes/Service.js +++ b/lib/classes/Service.js @@ -18,8 +18,8 @@ class Service { this.defaults = { stage: 'dev', region: 'us-east-1', + variableSyntax: null, }; - this.variableSyntax = null; this.custom = {}; this.plugins = []; this.functions = {}; @@ -88,7 +88,6 @@ class Service { that.service = serverlessYml.service; that.provider = serverlessYml.provider; - that.variableSyntax = serverlessYml.variableSyntax; that.custom = serverlessYml.custom; that.plugins = serverlessYml.plugins; that.resources = serverlessYml.resources; @@ -116,6 +115,9 @@ class Service { if (serverlessYml.defaults && serverlessYml.defaults.region) { this.defaults.region = serverlessYml.defaults.region; } + if (serverlessYml.defaults && serverlessYml.defaults.variableSyntax) { + this.defaults.variableSyntax = serverlessYml.defaults.variableSyntax; + } }) .then(() => that.serverless.yamlParser .parse(serverlessEnvYmlPath)) @@ -159,11 +161,11 @@ class Service { let varTemplateSyntax = /\${([\s\S]+?)}/g; - if (this.variableSyntax) { - varTemplateSyntax = RegExp(this.variableSyntax, 'g'); + if (this.defaults && this.defaults.variableSyntax) { + varTemplateSyntax = RegExp(this.defaults.variableSyntax, 'g'); // temporally remove variable syntax from service otherwise it'll match - this.variableSyntax = true; + this.defaults.variableSyntax = true; } const commonVars = this.getVariables(); @@ -303,7 +305,9 @@ class Service { this.environment = environment; // put back variable syntax if we removed it for processing - if (this.variableSyntax) this.variableSyntax = varTemplateSyntax; + if (this.defaults && this.defaults.variableSyntax) { + this.defaults.variableSyntax = varTemplateSyntax; + } return this; }); diff --git a/tests/classes/Service.js b/tests/classes/Service.js index 44a26c7a6..ab7526bcf 100644 --- a/tests/classes/Service.js +++ b/tests/classes/Service.js @@ -22,7 +22,11 @@ describe('Service', () => { expect(serviceInstance.service).to.be.equal(null); expect(serviceInstance.provider).to.deep.equal({}); - expect(serviceInstance.variableSyntax).to.be.equal(null); + expect(serviceInstance.defaults).to.deep.equal({ + stage: 'dev', + region: 'us-east-1', + variableSyntax: null, + }); expect(serviceInstance.custom).to.deep.equal({}); expect(serviceInstance.plugins).to.deep.equal([]); expect(serviceInstance.functions).to.deep.equal({}); @@ -527,7 +531,9 @@ describe('Service', () => { const tmpDirPath = path.join(os.tmpdir(), (new Date).getTime().toString()); const serverlessYml = { service: '${{testVar}}', - variableSyntax: '\\${{([\\s\\S]+?)}}', + defaults: { + variableSyntax: '\\${{([\\s\\S]+?)}}', + }, provider: 'aws', functions: {}, }; @@ -557,7 +563,7 @@ describe('Service', () => { return serviceInstance.load().then((loadedService) => { expect(loadedService.service).to.be.equal('commonVar'); - delete serviceInstance.variableSyntax; + delete serviceInstance.defaults.variableSyntax; }); });