MCPcopy
hub / github.com/caddyserver/caddy / cmdAdaptConfig

Function cmdAdaptConfig

cmd/commandfuncs.go:552–641  ·  view source on GitHub ↗
(fl Flags)

Source from the content-addressed store, hash-verified

550}
551
552func cmdAdaptConfig(fl Flags) (int, error) {
553 configFlag := fl.String("config")
554 adapterFlag := fl.String("adapter")
555 prettyFlag := fl.Bool("pretty")
556 validateFlag := fl.Bool("validate")
557
558 var err error
559 configFlag, err = configFileWithRespectToDefault(caddy.Log(), configFlag)
560 if err != nil {
561 return caddy.ExitCodeFailedStartup, err
562 }
563 if configFlag == "" {
564 return caddy.ExitCodeFailedStartup,
565 fmt.Errorf("input file required when there is no Caddyfile in current directory (use --config flag)")
566 }
567
568 // load all additional envs as soon as possible
569 err = handleEnvFileFlag(fl)
570 if err != nil {
571 return caddy.ExitCodeFailedStartup, err
572 }
573
574 if adapterFlag == "" {
575 return caddy.ExitCodeFailedStartup,
576 fmt.Errorf("adapter name is required (use --adapt flag or leave unspecified for default)")
577 }
578
579 cfgAdapter := caddyconfig.GetAdapter(adapterFlag)
580 if cfgAdapter == nil {
581 return caddy.ExitCodeFailedStartup,
582 fmt.Errorf("unrecognized config adapter: %s", adapterFlag)
583 }
584
585 var input []byte
586 // read from stdin if the file name is "-"
587 if configFlag == "-" {
588 input, err = io.ReadAll(os.Stdin)
589 } else {
590 input, err = os.ReadFile(configFlag)
591 }
592 if err != nil {
593 return caddy.ExitCodeFailedStartup,
594 fmt.Errorf("reading input file: %v", err)
595 }
596
597 opts := map[string]any{"filename": configFlag}
598
599 adaptedConfig, warnings, err := cfgAdapter.Adapt(input, opts)
600 if err != nil {
601 return caddy.ExitCodeFailedStartup, err
602 }
603
604 if prettyFlag {
605 var prettyBuf bytes.Buffer
606 err = json.Indent(&prettyBuf, adaptedConfig, "", "\t")
607 if err != nil {
608 return caddy.ExitCodeFailedStartup, err
609 }

Callers

nothing calls this directly

Calls 10

GetAdapterFunction · 0.92
handleEnvFileFlagFunction · 0.85
ReadFileMethod · 0.80
PrintlnMethod · 0.80
AdaptMethod · 0.65
ValidateMethod · 0.65
StringMethod · 0.45
BoolMethod · 0.45
IntMethod · 0.45

Tested by

no test coverage detected