@@ -60,32 +60,11 @@ var localServerStartCmd = &console.Command{
60
60
Aliases : []* console.Alias {{Name : "server:start" }, {Name : "serve" }},
61
61
Usage : "Run a local web server" ,
62
62
Description : localWebServerProdWarningMsg ,
63
- Flags : []console.Flag {
63
+ Flags : append (
64
+ project .ConfigurationFlags ,
64
65
dirFlag ,
65
- & console.BoolFlag {Name : "allow-http" , Usage : "Prevent auto-redirection from HTTP to HTTPS" },
66
- & console.StringFlag {Name : "document-root" , Usage : "Project document root (auto-configured by default)" },
67
- & console.StringFlag {Name : "passthru" , Usage : "Project passthru index (auto-configured by default)" },
68
- & console.IntFlag {Name : "port" , DefaultValue : 8000 , Usage : "Preferred HTTP port" },
69
- & console.StringFlag {Name : "listen-ip" , DefaultValue : "127.0.0.1" , Usage : "The IP on which the CLI should listen" },
70
- & console.BoolFlag {Name : "allow-all-ip" , Usage : "Listen on all the available interfaces" },
71
- & console.BoolFlag {Name : "daemon" , Aliases : []string {"d" }, Usage : "Run the server in the background" },
72
66
& console.BoolFlag {Name : "no-humanize" , Usage : "Do not format JSON logs" },
73
- & console.StringFlag {Name : "p12" , Usage : "Name of the file containing the TLS certificate to use in p12 format" },
74
- & console.BoolFlag {Name : "no-tls" , Usage : "Use HTTP instead of HTTPS" },
75
- & console.BoolFlag {Name : "use-gzip" , Usage : "Use GZIP" },
76
- & console.StringFlag {
77
- Name : "tls-key-log-file" ,
78
- Usage : "Destination for TLS master secrets in NSS key log format" ,
79
- // If 'SSLKEYLOGFILE' environment variable is set, uses this as a
80
- // destination of TLS key log. In this context, the name
81
- // 'SSLKEYLOGFILE' is common, so using 'SSL' instead of 'TLS' name.
82
- // This environment variable is preferred than the key log file
83
- // from the console argument.
84
- EnvVars : []string {"SSLKEYLOGFILE" },
85
- },
86
- & console.BoolFlag {Name : "no-workers" , Usage : "Do not start workers" },
87
- & console.BoolFlag {Name : "allow-cors" , Usage : "Allow Cross-origin resource sharing (CORS) requests" },
88
- },
67
+ ),
89
68
Action : func (c * console.Context ) error {
90
69
ui := terminal .SymfonyStyle (terminal .Stdout , terminal .Stdin )
91
70
projectDir , err := getProjectDir (c .String ("dir" ))
@@ -109,12 +88,21 @@ var localServerStartCmd = &console.Command{
109
88
return console .Exit ("" , 1 )
110
89
}
111
90
91
+ lw , err := pidFile .LogWriter ()
92
+ if err != nil {
93
+ return err
94
+ }
95
+
112
96
reexec .NotifyForeground ("config" )
113
- config , fileConfig , err := project .NewConfigFromContext (c , projectDir )
97
+ config , err := project .NewConfigFromContext (
98
+ c ,
99
+ zerolog .New (lw ).With ().Str ("source" , "server" ).Timestamp ().Logger (),
100
+ homeDir ,
101
+ projectDir ,
102
+ )
114
103
if err != nil {
115
104
return errors .WithStack (err )
116
105
}
117
- config .HomeDir = homeDir
118
106
119
107
if config .Daemon && ! reexec .IsChild () {
120
108
varDir := filepath .Join (homeDir , "var" )
@@ -148,20 +136,20 @@ var localServerStartCmd = &console.Command{
148
136
if err != nil {
149
137
return errors .WithStack (err )
150
138
}
151
- if fileConfig != nil && fileConfig .Proxy != nil {
152
- if err := proxyConfig .ReplaceDirDomains (projectDir , fileConfig .Proxy .Domains ); err != nil {
139
+ if len ( config .Proxy . Domains ) > 0 {
140
+ if err := proxyConfig .ReplaceDirDomains (projectDir , config .Proxy .Domains ); err != nil {
153
141
return errors .WithStack (err )
154
142
}
155
143
}
156
144
157
145
reexec .NotifyForeground ("tls" )
158
- if ! config .NoTLS && config .PKCS12 == "" {
146
+ if ! config .HTTP . NoTLS && config . HTTP .PKCS12 == "" {
159
147
ca , err := cert .NewCA (filepath .Join (homeDir , "certs" ))
160
148
if err != nil {
161
149
return errors .WithStack (err )
162
150
} else if ! ca .HasCA () {
163
151
ui .Warning (fmt .Sprintf (`run "%s server:ca:install" first if you want to run the web server with TLS support, or use "--p12" or "--no-tls" to avoid this warning` , c .App .HelpName ))
164
- config .NoTLS = true
152
+ config .HTTP . NoTLS = true
165
153
} else {
166
154
p12 := filepath .Join (homeDir , "certs" , "default.p12" )
167
155
if _ , err := os .Stat (p12 ); os .IsNotExist (err ) {
@@ -182,24 +170,19 @@ var localServerStartCmd = &console.Command{
182
170
ui .Warning (fmt .Sprintf (`Your local CA must be regenerated, run "%s %s --renew" first to renew it` , c .App .HelpName , localServerCAInstallCmd .FullName ()))
183
171
}
184
172
}
185
- config .PKCS12 = p12
173
+ config .HTTP . PKCS12 = p12
186
174
}
187
175
}
188
176
189
- if config .TlsKeyLogFile != "" {
177
+ if config .HTTP . TlsKeyLogFile != "" {
190
178
ui .Warning (localWebServerTlsKeyLogWarningMsg )
191
179
}
192
180
193
- if config .AllowCORS {
181
+ if config .HTTP . AllowCORS {
194
182
ui .Warning (localWebServerAllowsCORSLogWarningMsg )
195
183
}
196
184
197
- lw , err := pidFile .LogWriter ()
198
- if err != nil {
199
- return err
200
- }
201
- config .Logger = zerolog .New (lw ).With ().Str ("source" , "server" ).Timestamp ().Logger ()
202
- p , err := project .New (config )
185
+ p , err := project .New (config , c .App .Version )
203
186
if err != nil {
204
187
return err
205
188
}
@@ -283,7 +266,7 @@ var localServerStartCmd = &console.Command{
283
266
}
284
267
285
268
scheme := "https"
286
- if config .NoTLS {
269
+ if config .HTTP . NoTLS {
287
270
scheme = "http"
288
271
}
289
272
@@ -310,7 +293,7 @@ var localServerStartCmd = &console.Command{
310
293
311
294
reexec .NotifyForeground ("listening" )
312
295
ui .Warning (localWebServerProdWarningMsg )
313
- if config .ListenIp == "127.0.0.1" {
296
+ if config .HTTP . ListenIp == "127.0.0.1" {
314
297
ui .Warning (`Please note that the Symfony CLI only listens on 127.0.0.1 by default since version 5.10.3.
315
298
You can use the --allow-all-ip or --listen-ip flags to change this behavior.` )
316
299
}
@@ -321,16 +304,16 @@ var localServerStartCmd = &console.Command{
321
304
go tailer .Tail (terminal .Stderr )
322
305
}
323
306
324
- if fileConfig != nil && ! config .NoWorkers {
307
+ if ! config .NoWorkers {
325
308
reexec .NotifyForeground ("workers" )
326
309
327
- _ , isDockerComposeWorkerConfigured := fileConfig .Workers [project .DockerComposeWorkerKey ]
310
+ _ , isDockerComposeWorkerConfigured := config .Workers [project .DockerComposeWorkerKey ]
328
311
var dockerWg sync.WaitGroup
329
312
if isDockerComposeWorkerConfigured {
330
313
dockerWg .Add (1 )
331
314
}
332
315
333
- for name , worker := range fileConfig .Workers {
316
+ for name , worker := range config .Workers {
334
317
pidFile := pid .New (projectDir , worker .Cmd )
335
318
if pidFile .IsRunning () {
336
319
terminal .Eprintfln ("<warning>WARNING</> Unable to start worker \" %s\" : it is already running for this project as PID %d" , name , pidFile .Pid )
0 commit comments