@@ -10,6 +10,7 @@ import (
1010 "os"
1111 "os/exec"
1212 "os/signal"
13+ "path/filepath"
1314 "runtime"
1415 "strings"
1516 "syscall"
@@ -164,8 +165,9 @@ func interactiveMode(c *cli.Context) error {
164165func initMode (c * cli.Context ) error {
165166 name := c .String ("name" )
166167 packageManager := c .String ("package-manager" )
167- types := c .Bool ("types" )
168168 initGit := c .Bool ("init-git" )
169+ skipInstall := c .Bool ("skip-install" )
170+ force := c .Bool ("force" )
169171
170172 // Попытка загрузить глобальный конфиг для подстановки значений по умолчанию
171173 importConfig , _ := globalconfig .LoadConfig ()
@@ -182,6 +184,7 @@ func initMode(c *cli.Context) error {
182184
183185 // If the user didn't provide specific flags (or just ran 'wfkit init'), ask them interactively
184186 if c .NumFlags () == 0 {
187+ installDependencies := true
185188 err := huh .NewForm (
186189 huh .NewGroup (
187190 huh .NewInput ().
@@ -205,8 +208,9 @@ func initMode(c *cli.Context) error {
205208 ).
206209 Value (& packageManager ),
207210 huh .NewConfirm ().
208- Title ("Use TypeScript?" ).
209- Value (& types ),
211+ Title ("Install dependencies now?" ).
212+ Description ("Installs the generated project's local CLI and frontend tooling immediately." ).
213+ Value (& installDependencies ),
210214 huh .NewConfirm ().
211215 Title ("Initialize git repository?" ).
212216 Description ("Runs `git init` in the new project directory." ).
@@ -217,10 +221,12 @@ func initMode(c *cli.Context) error {
217221 if err != nil {
218222 return err
219223 }
224+
225+ skipInstall = ! installDependencies
220226 }
221227
222228 if repositoryName == "" {
223- repositoryName = name
229+ repositoryName = filepath . Base ( filepath . Clean ( name ))
224230 }
225231
226232 // Сохраняем введенные данные в глобальный конфиг, чтобы использовать их в следующий раз
@@ -248,13 +254,16 @@ func initMode(c *cli.Context) error {
248254 }
249255
250256 opts := initconfig.Options {
251- Name : name ,
257+ ProjectDir : name ,
258+ Name : filepath .Base (filepath .Clean (name )),
252259 PagesDir : pagesDir ,
253260 GlobalEntry : globalEntry ,
254261 GlobalVar : globalVar ,
255- Types : types ,
256262 InitGit : initGit ,
263+ Force : force ,
264+ SkipInstall : skipInstall ,
257265 PackageManager : packageManager ,
266+ CLIValue : c .App .Version ,
258267 GitHubUser : githubUser ,
259268 RepositoryName : repositoryName ,
260269 }
@@ -263,21 +272,49 @@ func initMode(c *cli.Context) error {
263272 return fmt .Errorf ("initialization failed: %w" , err )
264273 }
265274
275+ nextSteps := []string {fmt .Sprintf ("cd %s" , name )}
276+ if skipInstall {
277+ nextSteps = append (nextSteps , packageManagerInstallCommand (packageManager ))
278+ }
279+ nextSteps = append (nextSteps , packageManagerScriptCommand (packageManager , "dev" ), "wfkit doctor" )
280+
266281 utils .PrintSuccessScreen (
267282 "Project initialized" ,
268283 "Your Webflow project scaffold is ready." ,
269284 []utils.SummaryMetric {
270- {Label : "Project" , Value : name , Tone : "success" },
285+ {Label : "Project" , Value : opts . Name , Tone : "success" },
271286 {Label : "Package manager" , Value : packageManager , Tone : "info" },
272- {Label : "TypeScript " , Value : map [bool ]string {true : "on " , false : "off " }[types ], Tone : "info" },
287+ {Label : "Dependencies " , Value : map [bool ]string {true : "skipped " , false : "installed " }[skipInstall ], Tone : "info" },
273288 },
274- fmt .Sprintf ("cd %s" , name ),
275- fmt .Sprintf ("%s run start" , packageManager ),
276- "wfkit doctor" ,
289+ nextSteps ... ,
277290 )
278291 return nil
279292}
280293
294+ func packageManagerScriptCommand (packageManager , script string ) string {
295+ switch packageManager {
296+ case "bun" :
297+ return fmt .Sprintf ("bun run %s" , script )
298+ case "yarn" , "pnpm" :
299+ return fmt .Sprintf ("%s %s" , packageManager , script )
300+ default :
301+ return fmt .Sprintf ("npm run %s" , script )
302+ }
303+ }
304+
305+ func packageManagerInstallCommand (packageManager string ) string {
306+ switch packageManager {
307+ case "bun" :
308+ return "bun install"
309+ case "yarn" :
310+ return "yarn"
311+ case "pnpm" :
312+ return "pnpm install"
313+ default :
314+ return "npm install"
315+ }
316+ }
317+
281318// updateMode checks for and processes updates
282319func updateMode (c * cli.Context ) error {
283320 updateManager := updater .NewUpdateManager (c .App .Version )
@@ -1033,8 +1070,9 @@ func main() {
10331070 & cli.StringFlag {Name : "pages-dir" , Value : "src/pages" , Usage : "Directory for pages" },
10341071 & cli.StringFlag {Name : "global-entry" , Value : "src/global/index.ts" , Usage : "Global entry file" },
10351072 & cli.StringFlag {Name : "global-var" , Value : "WF" , Usage : "Global variable name" },
1036- & cli.BoolFlag {Name : "types" , Value : true , Usage : "Generate TypeScript types" },
10371073 & cli.BoolFlag {Name : "init-git" , Usage : "Initialize a local git repository inside the project" },
1074+ & cli.BoolFlag {Name : "skip-install" , Usage : "Skip dependency installation after generating the scaffold" },
1075+ & cli.BoolFlag {Name : "force" , Usage : "Allow writing scaffold files into an existing non-empty directory" },
10381076 & cli.StringFlag {Name : "package-manager" , Value : "bun" , Usage : "Package manager (npm, yarn, pnpm, bun)" },
10391077 },
10401078 Action : initMode ,
0 commit comments