@@ -64,12 +64,35 @@ let updateRescriptJson = async (~projectName, ~versions: RescriptVersions.versio
6464let newProjectMessage = "Create a new ReScript project"
6565
6666let getTemplateOptions = () =>
67- Templates .templates -> Array .map (({name , displayName , shortDescription }) => {
67+ Templates .templates -> Array .map (({name , displayName , shortDescription , _ }) => {
6868 P .value : name ,
6969 label : displayName ,
7070 hint : shortDescription ,
7171 })
7272
73+ let getVariantOptions = (variants : array <Templates .variant >) =>
74+ variants -> Array .map (({name , displayName , shortDescription }) => {
75+ P .value : name ,
76+ label : displayName ,
77+ hint : shortDescription ,
78+ })
79+
80+ let promptTemplateName = async () => {
81+ let selectedName = await P .select ({
82+ message : "Select a template" ,
83+ options : getTemplateOptions (),
84+ })-> P .resultOrRaise
85+
86+ switch Templates .templates -> Array .find (template => template .name === selectedName ) {
87+ | Some ({variants : Some (variants )}) =>
88+ await P .select ({
89+ message : "Select a variant" ,
90+ options : getVariantOptions (variants ),
91+ })-> P .resultOrRaise
92+ | _ => selectedName
93+ }
94+ }
95+
7396let createProject = async (~templateName , ~projectName , ~versions ) => {
7497 let templatePath = CraPaths .getTemplatePath (~templateName )
7598 let projectPath = Path .join2 (Process .cwd (), projectName )
@@ -139,11 +162,7 @@ let createNewProject = async () => {
139162
140163 let templateName = switch commandLineArguments .templateName {
141164 | Some (templateName ) => templateName
142- | None =>
143- await P .select ({
144- message : "Select a template" ,
145- options : getTemplateOptions (),
146- })-> P .resultOrRaise
165+ | None => await promptTemplateName ()
147166 }
148167
149168 let versions = useDefaultVersions
0 commit comments