Skip to content

Commit 9e3d992

Browse files
committed
fix: correct add-ons handling for create-start-app
1 parent 3f8ce77 commit 9e3d992

File tree

3 files changed

+29
-12
lines changed

3 files changed

+29
-12
lines changed

packages/cta-engine/src/cli.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { createDefaultEnvironment } from './environment.js'
1616

1717
import type { PackageManager } from './package-manager.js'
1818
import type { ToolChain } from './toolchain.js'
19-
import type { CliOptions, Framework } from './types.js'
19+
import type { CliOptions, Framework, Mode, TemplateOptions } from './types.js'
2020

2121
export function cli({
2222
name,
@@ -26,7 +26,7 @@ export function cli({
2626
}: {
2727
name: string
2828
appName: string
29-
forcedMode?: 'typescript' | 'javascript' | 'file-router'
29+
forcedMode?: Mode
3030
forcedAddOns?: Array<string>
3131
}) {
3232
const program = new Command()
@@ -143,12 +143,12 @@ export function cli({
143143
program.action(async (projectName: string, options: CliOptions) => {
144144
if (options.listAddOns) {
145145
await listAddOns(options, {
146-
forcedMode,
146+
forcedMode: forcedMode as TemplateOptions,
147147
forcedAddOns,
148148
})
149149
} else if (options.mcp || options.mcpSse) {
150150
await runServer(!!options.mcpSse, {
151-
forcedMode,
151+
forcedMode: forcedMode as TemplateOptions,
152152
forcedAddOns,
153153
appName,
154154
})
@@ -160,16 +160,20 @@ export function cli({
160160
} as CliOptions
161161

162162
if (forcedMode) {
163-
cliOptions.template = forcedMode
163+
cliOptions.template = forcedMode as TemplateOptions
164164
}
165165

166-
let finalOptions = await normalizeOptions(cliOptions, forcedAddOns)
166+
let finalOptions = await normalizeOptions(
167+
cliOptions,
168+
forcedMode,
169+
forcedAddOns,
170+
)
167171
if (finalOptions) {
168172
intro(`Creating a new ${appName} app in ${projectName}...`)
169173
} else {
170174
intro(`Let's configure your ${appName} application`)
171175
finalOptions = await promptForOptions(cliOptions, {
172-
forcedMode,
176+
forcedMode: forcedMode as TemplateOptions,
173177
forcedAddOns,
174178
})
175179
}

packages/cta-engine/src/options.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,20 @@ import { DEFAULT_TOOLCHAIN, SUPPORTED_TOOLCHAINS } from './toolchain.js'
1616
import { CODE_ROUTER, DEFAULT_FRAMEWORK, FILE_ROUTER } from './constants.js'
1717
import { finalizeAddOns, getAllAddOns, loadRemoteAddOn } from './add-ons.js'
1818

19-
import type { AddOn, CliOptions, Options, Overlay, Variable } from './types.js'
19+
import type {
20+
AddOn,
21+
CliOptions,
22+
Mode,
23+
Options,
24+
Overlay,
25+
TemplateOptions,
26+
Variable,
27+
} from './types.js'
2028

2129
// If all CLI options are provided, use them directly
2230
export async function normalizeOptions(
2331
cliOptions: CliOptions,
32+
forcedMode?: Mode,
2433
forcedAddOns?: Array<string>,
2534
): Promise<Options | undefined> {
2635
// in some cases, if you use windows/powershell, the argument for addons
@@ -80,7 +89,9 @@ export async function normalizeOptions(
8089
}
8190
chosenAddOns = await finalizeAddOns(
8291
cliOptions.framework || DEFAULT_FRAMEWORK,
83-
cliOptions.template === 'file-router' ? FILE_ROUTER : CODE_ROUTER,
92+
forcedMode || cliOptions.template === 'file-router'
93+
? FILE_ROUTER
94+
: CODE_ROUTER,
8495
finalAddOns,
8596
)
8697
tailwind = true
@@ -154,7 +165,7 @@ export async function promptForOptions(
154165
forcedMode,
155166
}: {
156167
forcedAddOns?: Array<string>
157-
forcedMode?: 'typescript' | 'javascript' | 'file-router'
168+
forcedMode?: TemplateOptions
158169
},
159170
): Promise<Required<Options>> {
160171
const options = {} as Required<Options>

packages/cta-engine/src/types.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@ export type Framework = 'solid' | 'react'
66

77
export type TemplateOptions = 'typescript' | 'javascript' | 'file-router'
88

9+
export type Mode = typeof CODE_ROUTER | typeof FILE_ROUTER
10+
911
export interface Options {
1012
framework: Framework
1113
projectName: string
1214
typescript: boolean
1315
tailwind: boolean
1416
packageManager: PackageManager
1517
toolchain: ToolChain
16-
mode: typeof CODE_ROUTER | typeof FILE_ROUTER
18+
mode: Mode
1719
addOns: boolean
1820
chosenAddOns: Array<AddOn>
1921
git: boolean
@@ -114,7 +116,7 @@ export type Overlay = AddOn & {
114116
author: string
115117
link: string
116118
license: string
117-
mode: typeof CODE_ROUTER | typeof FILE_ROUTER
119+
mode: Mode
118120
framework: Framework
119121
typescript: boolean
120122
tailwind: boolean

0 commit comments

Comments
 (0)