MCPcopy
hub / github.com/perkeep/perkeep / storageFromParam

Method storageFromParam

cmd/pk/sync.go:160–214  ·  view source on GitHub ↗

which is one of "src", "dest", or "thirdleg"

(which storageType, val string)

Source from the content-addressed store, hash-verified

158
159// which is one of "src", "dest", or "thirdleg"
160func (c *syncCmd) storageFromParam(which storageType, val string) (blobserver.Storage, error) {
161 var httpClient *http.Client
162
163 if val == "" {
164 switch which {
165 case storageThird:
166 return nil, nil
167 case storageSource:
168 discl := c.discoClient()
169 src, err := discl.BlobRoot()
170 if err != nil {
171 return nil, fmt.Errorf("Failed to discover source server's blob path: %v", err)
172 }
173 val = src
174 httpClient = discl.HTTPClient()
175 }
176 if val == "" {
177 return nil, cmdmain.UsageError("No --" + string(which) + " flag value specified")
178 }
179 }
180 if which == storageDest && val == "stdout" {
181 return nil, nil
182 }
183 if looksLikePath(val) {
184 disk, err := localdisk.New(val)
185 if err != nil {
186 return nil, fmt.Errorf("Interpreted --%v=%q as a local disk path, but got error: %v", which, val, err)
187 }
188 c.oneIsDisk = true
189 return disk, nil
190 }
191 cl, err := client.New(client.OptionServer(val), client.OptionInsecure(c.insecureTLS))
192 if err != nil {
193 return nil, fmt.Errorf("creating client for %q: %v", val, err)
194 }
195 if httpClient != nil {
196 cl.SetHTTPClient(httpClient)
197 }
198 if err := cl.SetupAuth(); err != nil {
199 return nil, fmt.Errorf("could not setup auth for connecting to %v: %v", val, err)
200 }
201 cl.Verbose = *cmdmain.FlagVerbose
202 cl.Logger = log.New(cmdmain.Stderr, "", log.LstdFlags)
203 serverKeyID, err := cl.ServerKeyID()
204 if err != nil && err != client.ErrNoSigning {
205 fmt.Fprintf(cmdmain.Stderr, "Failed to discover keyId for server %v: %v", val, err)
206 } else {
207 if which == storageSource {
208 c.srcKeyID = serverKeyID
209 } else if which == storageDest {
210 c.destKeyID = serverKeyID
211 }
212 }
213 return cl, nil
214}
215
216func looksLikePath(v string) bool {
217 prefix := func(s string) bool { return strings.HasPrefix(filepath.ToSlash(v), s) }

Callers 2

RunCommandMethod · 0.95
setClientMethod · 0.80

Calls 12

discoClientMethod · 0.95
UsageErrorTypeAlias · 0.92
NewFunction · 0.92
NewFunction · 0.92
OptionServerFunction · 0.92
OptionInsecureFunction · 0.92
looksLikePathFunction · 0.85
BlobRootMethod · 0.80
SetHTTPClientMethod · 0.80
SetupAuthMethod · 0.80
ServerKeyIDMethod · 0.80
HTTPClientMethod · 0.45

Tested by

no test coverage detected