Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/internal/offline_download/tool/tools.go
1562 views
1
package tool
2
3
import (
4
"fmt"
5
"github.com/alist-org/alist/v3/internal/model"
6
"sort"
7
)
8
9
var (
10
Tools = make(ToolsManager)
11
)
12
13
type ToolsManager map[string]Tool
14
15
func (t ToolsManager) Get(name string) (Tool, error) {
16
if tool, ok := t[name]; ok {
17
return tool, nil
18
}
19
return nil, fmt.Errorf("tool %s not found", name)
20
}
21
22
func (t ToolsManager) Add(tool Tool) {
23
t[tool.Name()] = tool
24
}
25
26
func (t ToolsManager) Names() []string {
27
names := make([]string, 0, len(t))
28
for name := range t {
29
if tool, err := t.Get(name); err == nil && tool.IsReady() {
30
names = append(names, name)
31
}
32
}
33
sort.Strings(names)
34
return names
35
}
36
37
func (t ToolsManager) Items() []model.SettingItem {
38
var items []model.SettingItem
39
for _, tool := range t {
40
items = append(items, tool.Items()...)
41
}
42
return items
43
}
44
45