1import * as Alchemy from "alchemy";
2import * as GCP from "alchemy/GCP";
3import * as Effect from "effect/Effect";
4import Api from "./src/Api.ts";
5import { ApiKey, DataKey, Keys } from "./src/resources.ts";
6
7export default Alchemy.Stack(
8 "GcpSecretsKmsExample",
9 { providers: GCP.providers(), state: Alchemy.localState() },
10 Effect.gen(function* () {
11 const keys = yield* Keys;
12 const dataKey = yield* DataKey;
13 const apiKey = yield* ApiKey;
14 const api = yield* Api;
15
16 return {
17 url: api.uri,
18 serviceName: api.name,
19 keyRingName: keys.name,
20 cryptoKeyName: dataKey.name,
21 // Seed the key with:
22 // printf 'my-key' | gcloud secrets versions add "$secretId" --data-file=-
23 secretId: apiKey.secretId,
24 secretName: apiKey.name,
25 };
26 }),
27);