(fl Flags)
| 374 | } |
| 375 | |
| 376 | func cmdReload(fl Flags) (int, error) { |
| 377 | configFlag := fl.String("config") |
| 378 | configAdapterFlag := fl.String("adapter") |
| 379 | addressFlag := fl.String("address") |
| 380 | forceFlag := fl.Bool("force") |
| 381 | |
| 382 | // get the config in caddy's native format |
| 383 | config, configFile, adapterUsed, err := LoadConfig(configFlag, configAdapterFlag) |
| 384 | if err != nil { |
| 385 | return caddy.ExitCodeFailedStartup, err |
| 386 | } |
| 387 | if configFile == "" { |
| 388 | return caddy.ExitCodeFailedStartup, fmt.Errorf("no config file to load") |
| 389 | } |
| 390 | |
| 391 | adminAddr, err := DetermineAdminAPIAddress(addressFlag, config, configFile, configAdapterFlag) |
| 392 | if err != nil { |
| 393 | return caddy.ExitCodeFailedStartup, fmt.Errorf("couldn't determine admin API address: %v", err) |
| 394 | } |
| 395 | |
| 396 | // optionally force a config reload |
| 397 | headers := make(http.Header) |
| 398 | if forceFlag { |
| 399 | headers.Set("Cache-Control", "must-revalidate") |
| 400 | } |
| 401 | // Provide the source file/adapter to the running process so it can |
| 402 | // preserve its last-config knowledge if this reload came from the same source. |
| 403 | headers.Set("Caddy-Config-Source-File", configFile) |
| 404 | headers.Set("Caddy-Config-Source-Adapter", adapterUsed) |
| 405 | |
| 406 | resp, err := AdminAPIRequest(adminAddr, http.MethodPost, "/load", headers, bytes.NewReader(config)) |
| 407 | if err != nil { |
| 408 | return caddy.ExitCodeFailedStartup, fmt.Errorf("sending configuration to instance: %v", err) |
| 409 | } |
| 410 | defer resp.Body.Close() |
| 411 | |
| 412 | return caddy.ExitCodeSuccess, nil |
| 413 | } |
| 414 | |
| 415 | func cmdVersion(_ Flags) (int, error) { |
| 416 | _, full := caddy.Version() |
nothing calls this directly
no test coverage detected