// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause

package dirfs

import (
	"context"
	"io/fs"
	"os"

	"tailscale.com/drive/driveimpl/shared"
)

// Stat implements webdav.FileSystem.
func (dfs *FS) Stat(ctx context.Context, name string) (fs.FileInfo, error) {
	nameWithoutStaticRoot, isStaticRoot := dfs.trimStaticRoot(name)
	if isStaticRoot || shared.IsRoot(name) {
		// Static root is a directory, always use now() as the modified time to
		// bust caches.
		fi := shared.ReadOnlyDirInfo(name, dfs.now())
		return fi, nil
	}

	child := dfs.childFor(nameWithoutStaticRoot)
	if child == nil {
		return nil, &os.PathError{Op: "stat", Path: name, Err: os.ErrNotExist}
	}

	return shared.ReadOnlyDirInfo(name, dfs.now()), nil
}
