MCPcopy Create free account
hub / github.com/TanStack/cli / promptForCreateOptions

Function promptForCreateOptions

packages/cli/src/options.ts:40–265  ·  view source on GitHub ↗
(
  cliOptions: CliOptions,
  {
    forcedAddOns = [],
    forcedDeployment,
    showDeploymentOptions = true,
    defaultFrameworkId,
  }: {
    forcedAddOns?: Array<string>
    forcedDeployment?: string
    showDeploymentOptions?: boolean
    defaultFrameworkId?: string
  },
)

Source from the content-addressed store, hash-verified

38import type { CliOptions } from './types.js'
39
40export async function promptForCreateOptions(
41 cliOptions: CliOptions,
42 {
43 forcedAddOns = [],
44 forcedDeployment,
45 showDeploymentOptions = true,
46 defaultFrameworkId,
47 }: {
48 forcedAddOns?: Array<string>
49 forcedDeployment?: string
50 showDeploymentOptions?: boolean
51 defaultFrameworkId?: string
52 },
53): Promise<Required<Options> | undefined> {
54 const options = {} as Required<Options>
55
56 if (cliOptions.framework) {
57 options.framework = getFrameworkById(cliOptions.framework)!
58 } else {
59 const availableFrameworks = getFrameworks()
60 if (defaultFrameworkId || availableFrameworks.length <= 1) {
61 options.framework = getFrameworkById(defaultFrameworkId || 'react')!
62 } else {
63 options.framework = await selectFramework(
64 availableFrameworks,
65 defaultFrameworkId,
66 )
67 }
68 }
69
70 const projectLocation = resolveProjectLocation({
71 projectName: cliOptions.projectName ?? (await getProjectName()),
72 targetDir: cliOptions.targetDir,
73 emptyProjectNameIsCurrentDirectory: true,
74 })
75
76 if (!projectLocation) {
77 throw new Error('Project name or target directory is required')
78 }
79
80 options.projectName = projectLocation.projectName
81 options.targetDir = projectLocation.targetDir
82
83 const { valid, error } = validateProjectName(options.projectName)
84 if (!valid) {
85 console.error(error)
86 process.exit(1)
87 }
88
89 // Mode is always file-router (TanStack Start)
90 options.mode = 'file-router'
91 const template = cliOptions.template?.toLowerCase().trim()
92 const isLegacyTemplate =
93 template &&
94 ['file-router', 'typescript', 'tsx', 'javascript', 'js', 'jsx'].includes(
95 template,
96 )
97 const routerOnly =

Callers 2

options.test.tsFile · 0.90
handleCreateFunction · 0.85

Calls 15

getFrameworkByIdFunction · 0.90
getFrameworksFunction · 0.90
loadStarterFunction · 0.90
getPackageManagerFunction · 0.90
finalizeAddOnsFunction · 0.90
selectFrameworkFunction · 0.85
resolveProjectLocationFunction · 0.85
getProjectNameFunction · 0.85
validateProjectNameFunction · 0.85
listTemplateChoicesFunction · 0.85
selectTemplateFunction · 0.85

Tested by

no test coverage detected