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

Function cmdImportStorage

cmd/storagefuncs.go:64–134  ·  view source on GitHub ↗
(fl Flags)

Source from the content-addressed store, hash-verified

62}
63
64func cmdImportStorage(fl Flags) (int, error) {
65 importStorageCmdConfigFlag := fl.String("config")
66 importStorageCmdImportFile := fl.String("input")
67
68 if importStorageCmdConfigFlag == "" {
69 return caddy.ExitCodeFailedStartup, errors.New("--config is required")
70 }
71 if importStorageCmdImportFile == "" {
72 return caddy.ExitCodeFailedStartup, errors.New("--input is required")
73 }
74
75 // extract storage from config if possible
76 storageCfg, err := determineStorage(importStorageCmdConfigFlag, "")
77 if err != nil {
78 return caddy.ExitCodeFailedStartup, err
79 }
80
81 // load specified storage or fallback to default
82 var stor certmagic.Storage
83 ctx, cancel := caddy.NewContext(caddy.Context{Context: context.Background()})
84 defer cancel()
85 if storageCfg != nil && storageCfg.StorageRaw != nil {
86 val, err := ctx.LoadModule(storageCfg, "StorageRaw")
87 if err != nil {
88 return caddy.ExitCodeFailedStartup, err
89 }
90 stor, err = val.(caddy.StorageConverter).CertMagicStorage()
91 if err != nil {
92 return caddy.ExitCodeFailedStartup, err
93 }
94 } else {
95 stor = caddy.DefaultStorage
96 }
97
98 // setup input
99 var f *os.File
100 if importStorageCmdImportFile == "-" {
101 f = os.Stdin
102 } else {
103 f, err = os.Open(importStorageCmdImportFile)
104 if err != nil {
105 return caddy.ExitCodeFailedStartup, fmt.Errorf("opening input file: %v", err)
106 }
107 defer f.Close()
108 }
109
110 // store each archive element
111 tr := tar.NewReader(f)
112 for {
113 hdr, err := tr.Next()
114 if err == io.EOF {
115 break
116 }
117 if err != nil {
118 return caddy.ExitCodeFailedQuit, fmt.Errorf("reading archive: %v", err)
119 }
120
121 b, err := io.ReadAll(tr)

Callers

nothing calls this directly

Calls 8

LoadModuleMethod · 0.95
determineStorageFunction · 0.85
OpenMethod · 0.80
PrintlnMethod · 0.80
CertMagicStorageMethod · 0.65
NextMethod · 0.65
StringMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected