Behaviour of a Depot filesystem.
Depot
copy(source :: Path.t(), destination :: Path.t(), opts :: keyword()) :: :ok | {:error, term()}
delete(path :: Path.t(), opts :: keyword()) :: :ok | {:error, term()}
file_exists(path :: Path.t(), opts :: keyword()) :: {:ok, :exists | :missing} | {:error, term()}
list_contents(path :: Path.t(), opts :: keyword()) :: {:ok, [ %Depot.Stat.Dir{mtime: term(), name: term(), size: term()} | %Depot.Stat.File{mtime: term(), name: term(), size: term()} ]} | {:error, term()}
move(source :: Path.t(), destination :: Path.t(), opts :: keyword()) :: :ok | {:error, term()}
read(path :: Path.t(), opts :: keyword()) :: {:ok, binary()} | {:error, term()}
write(path :: Path.t(), contents :: binary(), opts :: keyword()) :: :ok | {:error, term()}