mirror of
https://github.com/rclone/rclone
synced 2024-09-06 00:08:57 +02:00
operations: fix lsjson --stat on root directories of bucket based backends
This commit is contained in:
parent
f50537b64b
commit
54da6154c4
@ -264,6 +264,21 @@ func StatJSON(ctx context.Context, fsrc fs.Fs, remote string, opt *ListJSONOpt)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// Root is always a directory. When we have a NewDirEntry
|
||||
// primitive we need to call it, but for now this will do.
|
||||
if remote == "" {
|
||||
if !lj.dirs {
|
||||
return nil, nil
|
||||
}
|
||||
// Check the root directory exists
|
||||
_, err := fsrc.List(ctx, "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return lj.entry(ctx, fs.NewDir("", time.Now()))
|
||||
}
|
||||
|
||||
// Could be a file or a directory here
|
||||
if lj.files {
|
||||
// NewObject can return the sentinel errors ErrorObjectNotFound or ErrorIsDir
|
||||
@ -288,14 +303,6 @@ func StatJSON(ctx context.Context, fsrc fs.Fs, remote string, opt *ListJSONOpt)
|
||||
}
|
||||
}
|
||||
// Must be a directory here
|
||||
if remote == "" {
|
||||
// Check the root directory exists
|
||||
_, err := fsrc.List(ctx, "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return lj.entry(ctx, fs.NewDir("", time.Now()))
|
||||
}
|
||||
parent := path.Dir(remote)
|
||||
if parent == "." || parent == "/" {
|
||||
parent = ""
|
||||
|
@ -133,7 +133,7 @@ func TestListJSON(t *testing.T) {
|
||||
IsDir: false,
|
||||
}},
|
||||
}, {
|
||||
name: "NoModTime",
|
||||
name: "NoMimeType",
|
||||
opt: operations.ListJSONOpt{
|
||||
FilesOnly: true,
|
||||
NoMimeType: true,
|
||||
@ -254,6 +254,24 @@ func TestStatJSON(t *testing.T) {
|
||||
Name: "",
|
||||
IsDir: true,
|
||||
},
|
||||
}, {
|
||||
name: "RootFilesOnly",
|
||||
remote: "",
|
||||
opt: operations.ListJSONOpt{
|
||||
FilesOnly: true,
|
||||
},
|
||||
want: nil,
|
||||
}, {
|
||||
name: "RootDirsOnly",
|
||||
remote: "",
|
||||
opt: operations.ListJSONOpt{
|
||||
DirsOnly: true,
|
||||
},
|
||||
want: &operations.ListJSONItem{
|
||||
Path: "",
|
||||
Name: "",
|
||||
IsDir: true,
|
||||
},
|
||||
}, {
|
||||
name: "Dir",
|
||||
remote: "sub",
|
||||
|
Loading…
Reference in New Issue
Block a user