@@ -18,6 +18,7 @@ import (
1818 "github.com/minio/minio-go/v7/pkg/credentials"
1919 "github.com/minio/minio-go/v7/pkg/s3utils"
2020 "github.com/no-src/gofs/driver"
21+ nsfs "github.com/no-src/gofs/fs"
2122 "github.com/no-src/gofs/internal/rate"
2223 "github.com/no-src/gofs/retry"
2324 "github.com/no-src/log"
@@ -144,6 +145,18 @@ func (c *minIODriver) Create(path string) (err error) {
144145 return err
145146}
146147
148+ func (c * minIODriver ) Symlink (oldname , newname string ) (err error ) {
149+ if err = c .Remove (newname ); err != nil {
150+ return err
151+ }
152+ err = c .reconnectIfLost (func () error {
153+ content := nsfs .SymlinkText (oldname )
154+ _ , err = c .client .PutObject (c .ctx , c .bucketName , newname , bytes .NewReader ([]byte (content )), int64 (len (content )), minio.PutObjectOptions {})
155+ return err
156+ })
157+ return err
158+ }
159+
147160func (c * minIODriver ) Remove (path string ) (err error ) {
148161 return c .reconnectIfLost (func () error {
149162 infoChan := c .client .ListObjects (c .ctx , c .bucketName , minio.ListObjectsOptions {
@@ -250,6 +263,10 @@ func (c *minIODriver) Stat(path string) (fi os.FileInfo, err error) {
250263 return fi , err
251264}
252265
266+ func (c * minIODriver ) Lstat (path string ) (fi os.FileInfo , err error ) {
267+ return c .Stat (path )
268+ }
269+
253270func (c * minIODriver ) GetFileTime (path string ) (cTime time.Time , aTime time.Time , mTime time.Time , err error ) {
254271 err = c .reconnectIfLost (func () error {
255272 var info minio.ObjectInfo
@@ -288,6 +305,10 @@ func (c *minIODriver) Client() *minio.Client {
288305 return c .client
289306}
290307
308+ func (c * minIODriver ) ReadLink (path string ) (string , error ) {
309+ return path , nil
310+ }
311+
291312// fPutObject - Create an object in a bucket, with contents from file at filePath. Allows request cancellation.
292313// Keep up to date with the minio.Client.FPutObject.
293314func (c * minIODriver ) fPutObject (ctx context.Context , bucketName , objectName , filePath string , opts minio.PutObjectOptions ) (info minio.UploadInfo , err error ) {
0 commit comments