Skip to content

Commit 143d74d

Browse files
fix #70: SLS support for include files in serverless.yml (#71)
1 parent 5e50580 commit 143d74d

File tree

5 files changed

+74
-6
lines changed

5 files changed

+74
-6
lines changed

.vscode/launch.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,17 @@
200200
"console": "integratedTerminal",
201201
"type": "node",
202202
"cwd": "${workspaceRoot}/test/cdk-config"
203+
},
204+
{
205+
"name": "SLS deploy",
206+
"type": "node",
207+
"request": "launch",
208+
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/sls",
209+
"runtimeArgs": ["deploy"],
210+
"console": "integratedTerminal",
211+
"skipFiles": ["<node_internals>/**"],
212+
"env": {},
213+
"cwd": "${workspaceRoot}/test/sls-basic"
203214
}
204215
]
205216
}

src/frameworks/slsFramework.ts

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ export class SlsFramework implements IFramework {
5858

5959
let resolveConfigurationPath: any;
6060
let readConfiguration: any;
61+
let resolveVariables: any;
62+
let resolveVariablesMeta: any;
63+
let sources: any;
6164
let Serverless: any;
6265

6366
try {
@@ -74,6 +77,51 @@ export class SlsFramework implements IFramework {
7477
'serverless/lib/configuration/read.js'
7578
)
7679
).default;
80+
resolveVariables = (
81+
await import(
82+
//@ts-ignore
83+
'serverless/lib/configuration/variables/resolve.js'
84+
)
85+
).default;
86+
resolveVariablesMeta = (
87+
await import(
88+
//@ts-ignore
89+
'serverless/lib/configuration/variables/resolve-meta.js'
90+
)
91+
).default;
92+
const env = await import(
93+
//@ts-ignore
94+
'serverless/lib/configuration/variables/sources/env.js'
95+
);
96+
const file = await import(
97+
//@ts-ignore
98+
'serverless/lib/configuration/variables/sources/file.js'
99+
);
100+
const opt = await import(
101+
//@ts-ignore
102+
'serverless/lib/configuration/variables/sources/opt.js'
103+
);
104+
const self = await import(
105+
//@ts-ignore
106+
'serverless/lib/configuration/variables/sources/self.js'
107+
);
108+
const strToBool = await import(
109+
//@ts-ignore
110+
'serverless/lib/configuration/variables/sources/str-to-bool.js'
111+
);
112+
const sls = await import(
113+
//@ts-ignores
114+
'serverless/lib/configuration/variables/sources/instance-dependent/get-sls.js'
115+
);
116+
117+
sources = {
118+
env: env.default,
119+
file: file.default,
120+
opt: opt.default,
121+
self: self.default,
122+
strToBool: strToBool.default,
123+
sls: sls.default(),
124+
};
77125

78126
Serverless = (await import('serverless')).default;
79127
} catch (error: any) {
@@ -118,8 +166,16 @@ export class SlsFramework implements IFramework {
118166
options.profile = config.profile;
119167
}
120168

121-
const variablesMeta = {};
169+
const variablesMeta = resolveVariablesMeta(configuration);
122170

171+
await resolveVariables({
172+
serviceDir,
173+
configuration,
174+
variablesMeta,
175+
sources,
176+
options,
177+
fulfilledSources: new Set(),
178+
});
123179
let serverless: Serverless;
124180

125181
try {

test/sls-basic/functions1.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
testJsEsModule:
2+
handler: services/testJsEsModule/lambda.lambdaHandler

test/sls-basic/functions2.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
testJsCommonJs:
2+
handler: services/testJsCommonJs/lambda.lambdaHandler

test/sls-basic/serverless.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,5 @@ provider:
77
region: eu-west-1
88

99
functions:
10-
testJsCommonJs:
11-
handler: services/testJsCommonJs/lambda.lambdaHandler
12-
13-
testJsEsModule:
14-
handler: services/testJsEsModule/lambda.lambdaHandler
10+
- ${file(./functions1.yml)}
11+
- ${file(./functions2.yml)}

0 commit comments

Comments
 (0)