MCPcopy
hub / github.com/rclone/rclone / MkdirMetadata

Method MkdirMetadata

backend/union/union.go:192–234  ·  view source on GitHub ↗

MkdirMetadata makes the root directory of the Fs object

(ctx context.Context, dir string, metadata fs.Metadata)

Source from the content-addressed store, hash-verified

190
191// MkdirMetadata makes the root directory of the Fs object
192func (f *Fs) MkdirMetadata(ctx context.Context, dir string, metadata fs.Metadata) (fs.Directory, error) {
193 upstreams, err := f.create(ctx, dir)
194 if err != nil {
195 return nil, err
196 }
197 errs := Errors(make([]error, len(upstreams)))
198 entries := make([]upstream.Entry, len(upstreams))
199 multithread(len(upstreams), func(i int) {
200 u := upstreams[i]
201 if do := u.Features().MkdirMetadata; do != nil {
202 newDir, err := do(ctx, dir, metadata)
203 if err != nil {
204 errs[i] = fmt.Errorf("%s: %w", upstreams[i].Name(), err)
205 } else {
206 entries[i], err = u.WrapEntry(newDir)
207 if err != nil {
208 errs[i] = fmt.Errorf("%s: %w", upstreams[i].Name(), err)
209 }
210 }
211
212 } else {
213 // Just do Mkdir on upstreams which don't support MkdirMetadata
214 err := u.Mkdir(ctx, dir)
215 if err != nil {
216 errs[i] = fmt.Errorf("%s: %w", upstreams[i].Name(), err)
217 }
218 }
219 })
220 err = errs.Err()
221 if err != nil {
222 return nil, err
223 }
224
225 entry, err := f.wrapEntries(entries...)
226 if err != nil {
227 return nil, err
228 }
229 newDir, ok := entry.(fs.Directory)
230 if !ok {
231 return nil, fmt.Errorf("internal error: expecting %T to be an fs.Directory", entry)
232 }
233 return newDir, nil
234}
235
236// Purge all files in the directory
237//

Callers

nothing calls this directly

Calls 10

createMethod · 0.95
wrapEntriesMethod · 0.95
ErrorsTypeAlias · 0.85
multithreadFunction · 0.85
WrapEntryMethod · 0.80
FeaturesMethod · 0.65
NameMethod · 0.65
MkdirMethod · 0.65
ErrorfMethod · 0.45
ErrMethod · 0.45

Tested by

no test coverage detected