Skip to content

Commit 66b28c9

Browse files
authored
Lazy use aws sdk to avoid crashing version check when env vars are missing (#20)
* lazy intialize the aws sdk * lazy loading the otel sdk to be consistent * create a new release
1 parent df35c80 commit 66b28c9

File tree

5 files changed

+28
-20
lines changed

5 files changed

+28
-20
lines changed

.github/workflows/ci.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,3 @@ jobs:
1919
- name: Run CI
2020
run: |
2121
make ci
22-
env:
23-
#CI as of right now doesn't exercise the aws sdk fork
24-
#So setting this so it doesn't throw an error here - https://github.com/christophgysin/aws-sdk-js-v3/blob/deno/deno/config-resolver/regionConfig/resolveRegionConfig.ts#L23
25-
AWS_DEFAULT_REGION: "unused"

src/index.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,16 @@ const cliArgs = parse(Deno.args);
1515
await invoke({
1616
cliArgs: cliArgs as IExpectedCliArgs,
1717
versionData: versionDataFromFile as IVersionData,
18-
cloudformationClientAdapter: createCloudformationClientAdapter({
19-
accessKeyId: Deno.env.get("AWS_ACCESS_KEY_ID") ?? "", //TODO - add more explicit validation for these
20-
secretAccessKey: Deno.env.get("AWS_SECRET_ACCESS_KEY") ?? "",
21-
region: Deno.env.get("AWS_DEFAULT_REGION") ?? "",
22-
}),
18+
cloudformationClientAdapterFactory: () => {
19+
return createCloudformationClientAdapter({
20+
accessKeyId: Deno.env.get("AWS_ACCESS_KEY_ID") ?? "", //TODO - add more explicit validation for these
21+
secretAccessKey: Deno.env.get("AWS_SECRET_ACCESS_KEY") ?? "",
22+
region: Deno.env.get("AWS_DEFAULT_REGION") ?? "",
23+
});
24+
},
2325
transformStackEventDataIntoTracingData,
24-
telemetrySender: createTelemetrySender(),
26+
telemetrySenderFactory: () => {
27+
return createTelemetrySender();
28+
},
2529
logger: console,
2630
});

src/invoke.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import { ITelemetrySender } from "./openTelemetryAdapter/sender.ts";
99
interface IInputs {
1010
cliArgs: IExpectedCliArgs;
1111
versionData: IVersionData;
12-
cloudformationClientAdapter: ICloudformationClientAdapter;
12+
cloudformationClientAdapterFactory: () => ICloudformationClientAdapter;
1313
transformStackEventDataIntoTracingData:
1414
typeof transformStackEventDataIntoTracingData;
15-
telemetrySender: ITelemetrySender;
15+
telemetrySenderFactory: () => ITelemetrySender;
1616
logger: ILogger;
1717
}
1818

@@ -33,9 +33,9 @@ async function invoke(
3333
{
3434
cliArgs, //TODO - validate this input with zod, iots, etc...
3535
versionData,
36-
cloudformationClientAdapter,
36+
cloudformationClientAdapterFactory,
3737
transformStackEventDataIntoTracingData,
38-
telemetrySender,
38+
telemetrySenderFactory,
3939
logger,
4040
}: IInputs,
4141
) {
@@ -47,11 +47,11 @@ async function invoke(
4747
const tracingData = await transformStackEventDataIntoTracingData({
4848
stackName: cliArgs["stack-name"],
4949
dependencies: {
50-
cloudformationClientAdapter,
50+
cloudformationClientAdapter: cloudformationClientAdapterFactory(),
5151
},
5252
});
5353

54-
await telemetrySender.sendTracingData(tracingData);
54+
await telemetrySenderFactory().sendTracingData(tracingData);
5555
}
5656
}
5757

src/invoke_test.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,22 @@ Deno.test("Passing --version logs the version to the console", async () => {
3333
await invoke({
3434
cliArgs: parsedCliArgs,
3535
versionData: mockVersionData,
36-
cloudformationClientAdapter: {
36+
cloudformationClientAdapterFactory: () => ({
3737
getEventsFromMostRecentDeploy() {
3838
return Promise.resolve({ stackEvents: [] });
3939
},
40-
},
40+
}),
4141
transformStackEventDataIntoTracingData: () => {
42-
return Promise.resolve({ spanDataByConstructedId: new Map() });
42+
return Promise.resolve({
43+
spanDataByConstructedId: new Map(),
44+
rootConstructedId: "",
45+
});
4346
},
47+
telemetrySenderFactory: () => ({
48+
sendTracingData() {
49+
return Promise.resolve();
50+
},
51+
}),
4452
logger: mockLogger,
4553
});
4654

version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
"version": "0.0.5"
2+
"version": "0.0.6"
33
}

0 commit comments

Comments
 (0)