From 0380d7fff98365583e6f6cac888e1ddba120eaf8 Mon Sep 17 00:00:00 2001 From: Andy Hsu Date: Thu, 5 Oct 2023 13:38:35 +0800 Subject: [PATCH] wip: use items in offline_download --- cmd/root.go | 2 ++ cmd/server.go | 1 - internal/bootstrap/data/setting.go | 2 ++ internal/offline_download/all.go | 5 +++++ internal/offline_download/aria2/aria2.go | 16 ++++++++++------ internal/offline_download/{ => tool}/add.go | 2 +- internal/offline_download/{ => tool}/all_test.go | 6 +++--- internal/offline_download/{ => tool}/base.go | 2 +- internal/offline_download/{ => tool}/monitor.go | 2 +- internal/offline_download/{ => tool}/tools.go | 11 ++++++++++- internal/offline_download/{ => tool}/util.go | 2 +- 11 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 internal/offline_download/all.go rename internal/offline_download/{ => tool}/add.go (98%) rename internal/offline_download/{ => tool}/all_test.go (57%) rename internal/offline_download/{ => tool}/base.go (97%) rename internal/offline_download/{ => tool}/monitor.go (99%) rename internal/offline_download/{ => tool}/tools.go (71%) rename internal/offline_download/{ => tool}/util.go (94%) diff --git a/cmd/root.go b/cmd/root.go index 297eb7f8..6bd82b7a 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -5,6 +5,8 @@ import ( "os" "github.com/alist-org/alist/v3/cmd/flags" + _ "github.com/alist-org/alist/v3/drivers" + _ "github.com/alist-org/alist/v3/internal/offline_download" "github.com/spf13/cobra" ) diff --git a/cmd/server.go b/cmd/server.go index 94a60c72..f78d82b8 100644 --- a/cmd/server.go +++ b/cmd/server.go @@ -13,7 +13,6 @@ import ( "time" "github.com/alist-org/alist/v3/cmd/flags" - _ "github.com/alist-org/alist/v3/drivers" "github.com/alist-org/alist/v3/internal/bootstrap" "github.com/alist-org/alist/v3/internal/conf" "github.com/alist-org/alist/v3/pkg/utils" diff --git a/internal/bootstrap/data/setting.go b/internal/bootstrap/data/setting.go index 70e237c0..5740b510 100644 --- a/internal/bootstrap/data/setting.go +++ b/internal/bootstrap/data/setting.go @@ -4,6 +4,7 @@ import ( "github.com/alist-org/alist/v3/cmd/flags" "github.com/alist-org/alist/v3/internal/conf" "github.com/alist-org/alist/v3/internal/model" + "github.com/alist-org/alist/v3/internal/offline_download/tool" "github.com/alist-org/alist/v3/internal/op" "github.com/alist-org/alist/v3/pkg/utils" "github.com/alist-org/alist/v3/pkg/utils/random" @@ -168,6 +169,7 @@ func InitialSettings() []model.SettingItem { {Key: conf.QbittorrentUrl, Value: "http://admin:adminadmin@localhost:8080/", Type: conf.TypeString, Group: model.SINGLE, Flag: model.PRIVATE}, {Key: conf.QbittorrentSeedtime, Value: "0", Type: conf.TypeNumber, Group: model.SINGLE, Flag: model.PRIVATE}, } + initialSettingItems = append(initialSettingItems, tool.Tools.Items()...) if flags.Dev { initialSettingItems = append(initialSettingItems, []model.SettingItem{ {Key: "test_deprecated", Value: "test_value", Type: conf.TypeString, Flag: model.DEPRECATED}, diff --git a/internal/offline_download/all.go b/internal/offline_download/all.go new file mode 100644 index 00000000..a91cb7e1 --- /dev/null +++ b/internal/offline_download/all.go @@ -0,0 +1,5 @@ +package offline_download + +import ( + _ "github.com/alist-org/alist/v3/internal/offline_download/aria2" +) diff --git a/internal/offline_download/aria2/aria2.go b/internal/offline_download/aria2/aria2.go index 67d8b9c8..a2a6135d 100644 --- a/internal/offline_download/aria2/aria2.go +++ b/internal/offline_download/aria2/aria2.go @@ -8,7 +8,7 @@ import ( "github.com/alist-org/alist/v3/internal/conf" "github.com/alist-org/alist/v3/internal/model" - "github.com/alist-org/alist/v3/internal/offline_download" + "github.com/alist-org/alist/v3/internal/offline_download/tool" "github.com/alist-org/alist/v3/internal/setting" "github.com/alist-org/alist/v3/pkg/aria2/rpc" "github.com/pkg/errors" @@ -50,7 +50,7 @@ func (a *Aria2) IsReady() bool { return a.client != nil } -func (a *Aria2) AddURI(args *offline_download.AddUriArgs) (string, error) { +func (a *Aria2) AddURI(args *tool.AddUriArgs) (string, error) { options := map[string]interface{}{ "dir": args.TempDir, } @@ -66,7 +66,7 @@ func (a *Aria2) Remove(tid string) error { return err } -func (a *Aria2) Status(tid string) (*offline_download.Status, error) { +func (a *Aria2) Status(tid string) (*tool.Status, error) { info, err := a.client.TellStatus(tid) if err != nil { return nil, err @@ -79,7 +79,7 @@ func (a *Aria2) Status(tid string) (*offline_download.Status, error) { if err != nil { downloaded = 0 } - s := &offline_download.Status{ + s := &tool.Status{ Completed: info.Status == "complete", Err: err, } @@ -109,8 +109,12 @@ func (a *Aria2) Status(tid string) (*offline_download.Status, error) { return s, nil } -func (a *Aria2) GetFile(tid string) *offline_download.File { +func (a *Aria2) GetFile(tid string) *tool.File { return nil } -var _ offline_download.Tool = (*Aria2)(nil) +var _ tool.Tool = (*Aria2)(nil) + +func init() { + tool.Tools.Add("aria2", &Aria2{}) +} diff --git a/internal/offline_download/add.go b/internal/offline_download/tool/add.go similarity index 98% rename from internal/offline_download/add.go rename to internal/offline_download/tool/add.go index 253d8a70..ce613838 100644 --- a/internal/offline_download/add.go +++ b/internal/offline_download/tool/add.go @@ -1,4 +1,4 @@ -package offline_download +package tool import ( "context" diff --git a/internal/offline_download/all_test.go b/internal/offline_download/tool/all_test.go similarity index 57% rename from internal/offline_download/all_test.go rename to internal/offline_download/tool/all_test.go index 2ba6cf27..27da5e32 100644 --- a/internal/offline_download/all_test.go +++ b/internal/offline_download/tool/all_test.go @@ -1,13 +1,13 @@ -package offline_download_test +package tool_test import ( "testing" - "github.com/alist-org/alist/v3/internal/offline_download" + "github.com/alist-org/alist/v3/internal/offline_download/tool" ) func TestGetFiles(t *testing.T) { - files, err := offline_download.GetFiles("..") + files, err := tool.GetFiles("..") if err != nil { t.Fatal(err) } diff --git a/internal/offline_download/base.go b/internal/offline_download/tool/base.go similarity index 97% rename from internal/offline_download/base.go rename to internal/offline_download/tool/base.go index a0768e5a..8d5a5282 100644 --- a/internal/offline_download/base.go +++ b/internal/offline_download/tool/base.go @@ -1,4 +1,4 @@ -package offline_download +package tool import ( "io" diff --git a/internal/offline_download/monitor.go b/internal/offline_download/tool/monitor.go similarity index 99% rename from internal/offline_download/monitor.go rename to internal/offline_download/tool/monitor.go index 2c0e7ff8..79d82117 100644 --- a/internal/offline_download/monitor.go +++ b/internal/offline_download/tool/monitor.go @@ -1,4 +1,4 @@ -package offline_download +package tool import ( "fmt" diff --git a/internal/offline_download/tools.go b/internal/offline_download/tool/tools.go similarity index 71% rename from internal/offline_download/tools.go rename to internal/offline_download/tool/tools.go index ca328f24..b7eacbd2 100644 --- a/internal/offline_download/tools.go +++ b/internal/offline_download/tool/tools.go @@ -1,8 +1,9 @@ -package offline_download +package tool import ( "fmt" + "github.com/alist-org/alist/v3/internal/model" "github.com/alist-org/alist/v3/pkg/task" ) @@ -31,3 +32,11 @@ func (t ToolsManager) Names() []string { } return names } + +func (t ToolsManager) Items() []model.SettingItem { + var items []model.SettingItem + for _, tool := range t { + items = append(items, tool.Items()...) + } + return items +} diff --git a/internal/offline_download/util.go b/internal/offline_download/tool/util.go similarity index 94% rename from internal/offline_download/util.go rename to internal/offline_download/tool/util.go index a1950ef3..4344b89f 100644 --- a/internal/offline_download/util.go +++ b/internal/offline_download/tool/util.go @@ -1,4 +1,4 @@ -package offline_download +package tool import ( "os"