diff --git a/packages/create-llama/create-app.ts b/packages/create-llama/create-app.ts index 901723640e7f0e9501f1a858d6f791bfe2c6e2aa..29e2d837fbce10ea06ecaed8e769633a315d164b 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 21eda3b7a74934b7c992fdb6eba7b94db0d9fa2e..ad53b6d43c6943777d30d1e5a6971e7f76138884 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 087731013032bf23d1fb1558e6824e57ddceb8c4..2847856898886016f689bbeda0a3ffc4479ebb17 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 {