aws cli create: added guided db creation (#134)

This commit is contained in:
dswbx
2025-04-02 20:18:52 +02:00
committed by GitHub
parent e4608b7df7
commit aaae8d9681
3 changed files with 117 additions and 0 deletions

View File

@@ -0,0 +1,85 @@
import * as $p from "@clack/prompts";
import { upsertEnvFile } from "cli/commands/create/npm";
import { typewriter } from "cli/utils/cli";
import c from "picocolors";
import type { Template } from ".";
import open from "open";
export const aws = {
key: "aws",
title: "AWS Lambda Basic",
integration: "aws",
description: "A basic bknd AWS Lambda starter",
path: "gh:bknd-io/bknd/examples/aws-lambda",
ref: true,
setup: async (ctx) => {
await $p.stream.info(
(async function* () {
yield* typewriter("You need a running LibSQL instance for this adapter to work.");
})(),
);
const choice = await $p.select({
message: "How do you want to proceed?",
options: [
{ label: "Enter instance details", value: "enter" },
{ label: "Create a new instance", value: "new" },
],
});
if ($p.isCancel(choice)) {
process.exit(1);
}
if (choice === "new") {
await $p.stream.info(
(async function* () {
yield* typewriter(c.dim("Proceed on turso.tech to create your instance."));
})(),
);
await open("https://sqlite.new");
}
const url = await $p.text({
message: "Enter database URL",
placeholder: "libsql://<instance>.turso.io",
validate: (v) => {
if (!v) {
return "Invalid URL";
}
return;
},
});
if ($p.isCancel(url)) {
process.exit(1);
}
const token = await $p.text({
message: "Enter database token",
placeholder: "eyJhbGciOiJIUzI1NiIsInR...",
validate: (v) => {
if (!v) {
return "";
}
return;
},
});
if ($p.isCancel(token)) {
process.exit(1);
}
await upsertEnvFile(
{
DB_URL: url,
DB_TOKEN: token ?? "",
},
{ dir: ctx.dir },
);
await $p.stream.info(
(async function* () {
yield* typewriter(`Connection details written to ${c.cyan(".env")}`);
})(),
);
},
} as const satisfies Template;

View File

@@ -78,6 +78,12 @@ async function createD1(ctx: TemplateSetupCtx) {
process.exit(1);
}
await $p.stream.info(
(async function* () {
yield* typewriter("Now running wrangler to create a D1 database...");
})(),
);
exec(`npx wrangler d1 create ${name}`);
await $p.stream.info(
(async function* () {