From 8527875f0a27dc9618e81141b9658f07890646c5 Mon Sep 17 00:00:00 2001 From: Marcus Schiesser <mail@marcusschiesser.de> Date: Fri, 27 Oct 2023 17:00:55 +0700 Subject: [PATCH] added support for generating streaming template --- packages/create-llama/create-app.ts | 4 ++-- packages/create-llama/index.ts | 29 ++++++++++++++++++++++++ packages/create-llama/templates/types.ts | 2 +- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/packages/create-llama/create-app.ts b/packages/create-llama/create-app.ts index 901723640..29e2d837f 100644 --- a/packages/create-llama/create-app.ts +++ b/packages/create-llama/create-app.ts @@ -12,18 +12,18 @@ import type { TemplateFramework, TemplateType } from "./templates"; import { installTemplate } from "./templates"; export async function createApp({ + template, framework, appPath, packageManager, eslint, }: { + template: TemplateType; framework: TemplateFramework; appPath: string; packageManager: PackageManager; eslint: boolean; }): Promise<void> { - const template: TemplateType = "simple"; - const root = path.resolve(appPath); if (!(await isWriteable(path.dirname(root)))) { diff --git a/packages/create-llama/index.ts b/packages/create-llama/index.ts index 21eda3b7a..ad53b6d43 100644 --- a/packages/create-llama/index.ts +++ b/packages/create-llama/index.ts @@ -177,12 +177,40 @@ async function run(): Promise<void> { >; const defaults: typeof preferences = { + template: "simple", framework: "nextjs", eslint: true, }; const getPrefOrDefault = (field: string) => preferences[field] ?? defaults[field]; + if (!program.template) { + if (ciInfo.isCI) { + program.template = getPrefOrDefault("template"); + } else { + const { template } = await prompts( + { + type: "select", + name: "template", + message: "Which template would you like to use?", + choices: [ + { title: "Simple chat without streaming", value: "simple" }, + { title: "Simple chat with streaming", value: "streaming" }, + ], + initial: 0, + }, + { + onCancel: () => { + console.error("Exiting."); + process.exit(1); + }, + }, + ); + program.template = template; + preferences.template = template; + } + } + if (!program.framework) { if (ciInfo.isCI) { program.framework = getPrefOrDefault("framework"); @@ -233,6 +261,7 @@ async function run(): Promise<void> { } await createApp({ + template: program.template, framework: program.framework, appPath: resolvedProjectPath, packageManager, diff --git a/packages/create-llama/templates/types.ts b/packages/create-llama/templates/types.ts index 087731013..284785689 100644 --- a/packages/create-llama/templates/types.ts +++ b/packages/create-llama/templates/types.ts @@ -1,6 +1,6 @@ import { PackageManager } from "../helpers/get-pkg-manager"; -export type TemplateType = "simple"; +export type TemplateType = "simple" | "streaming"; export type TemplateFramework = "nextjs" | "express"; export interface InstallTemplateArgs { -- GitLab