mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-06-21 16:40:52 +00:00
Add default storage configurations (#12813)
Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
parent
4c6ac08182
commit
3878e985b6
19 changed files with 459 additions and 185 deletions
|
@ -10,7 +10,7 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
"net/url"
|
||||
"time"
|
||||
"os"
|
||||
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
)
|
||||
|
@ -18,28 +18,25 @@ import (
|
|||
var (
|
||||
// ErrURLNotSupported represents url is not supported
|
||||
ErrURLNotSupported = errors.New("url method not supported")
|
||||
// ErrIterateObjectsNotSupported represents IterateObjects not supported
|
||||
ErrIterateObjectsNotSupported = errors.New("iterateObjects method not supported")
|
||||
)
|
||||
|
||||
// Object represents the object on the storage
|
||||
type Object interface {
|
||||
io.ReadCloser
|
||||
io.Seeker
|
||||
}
|
||||
|
||||
// ObjectInfo represents the object info on the storage
|
||||
type ObjectInfo interface {
|
||||
Name() string
|
||||
Size() int64
|
||||
ModTime() time.Time
|
||||
Stat() (os.FileInfo, error)
|
||||
}
|
||||
|
||||
// ObjectStorage represents an object storage to handle a bucket and files
|
||||
type ObjectStorage interface {
|
||||
Open(path string) (Object, error)
|
||||
Save(path string, r io.Reader) (int64, error)
|
||||
Stat(path string) (ObjectInfo, error)
|
||||
Stat(path string) (os.FileInfo, error)
|
||||
Delete(path string) error
|
||||
URL(path, name string) (*url.URL, error)
|
||||
IterateObjects(func(path string, obj Object) error) error
|
||||
}
|
||||
|
||||
// Copy copys a file from source ObjectStorage to dest ObjectStorage
|
||||
|
@ -70,14 +67,15 @@ func Init() error {
|
|||
return initLFS()
|
||||
}
|
||||
|
||||
func initAttachments() error {
|
||||
func initStorage(storageCfg setting.Storage) (ObjectStorage, error) {
|
||||
var err error
|
||||
switch setting.Attachment.StoreType {
|
||||
case "local":
|
||||
Attachments, err = NewLocalStorage(setting.Attachment.Path)
|
||||
case "minio":
|
||||
minio := setting.Attachment.Minio
|
||||
Attachments, err = NewMinioStorage(
|
||||
var s ObjectStorage
|
||||
switch storageCfg.Type {
|
||||
case setting.LocalStorageType:
|
||||
s, err = NewLocalStorage(storageCfg.Path)
|
||||
case setting.MinioStorageType:
|
||||
minio := storageCfg.Minio
|
||||
s, err = NewMinioStorage(
|
||||
context.Background(),
|
||||
minio.Endpoint,
|
||||
minio.AccessKeyID,
|
||||
|
@ -88,40 +86,22 @@ func initAttachments() error {
|
|||
minio.UseSSL,
|
||||
)
|
||||
default:
|
||||
return fmt.Errorf("Unsupported attachment store type: %s", setting.Attachment.StoreType)
|
||||
return nil, fmt.Errorf("Unsupported attachment store type: %s", storageCfg.Type)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return nil
|
||||
return s, nil
|
||||
}
|
||||
|
||||
func initLFS() error {
|
||||
var err error
|
||||
switch setting.LFS.StoreType {
|
||||
case "local":
|
||||
LFS, err = NewLocalStorage(setting.LFS.ContentPath)
|
||||
case "minio":
|
||||
minio := setting.LFS.Minio
|
||||
LFS, err = NewMinioStorage(
|
||||
context.Background(),
|
||||
minio.Endpoint,
|
||||
minio.AccessKeyID,
|
||||
minio.SecretAccessKey,
|
||||
minio.Bucket,
|
||||
minio.Location,
|
||||
minio.BasePath,
|
||||
minio.UseSSL,
|
||||
)
|
||||
default:
|
||||
return fmt.Errorf("Unsupported LFS store type: %s", setting.LFS.StoreType)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
func initAttachments() (err error) {
|
||||
Attachments, err = initStorage(setting.Attachment.Storage)
|
||||
return
|
||||
}
|
||||
|
||||
func initLFS() (err error) {
|
||||
LFS, err = initStorage(setting.LFS.Storage)
|
||||
return
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue