Path: blob/main/internal/offline_download/tool/tools.go
1562 views
package tool12import (3"fmt"4"github.com/alist-org/alist/v3/internal/model"5"sort"6)78var (9Tools = make(ToolsManager)10)1112type ToolsManager map[string]Tool1314func (t ToolsManager) Get(name string) (Tool, error) {15if tool, ok := t[name]; ok {16return tool, nil17}18return nil, fmt.Errorf("tool %s not found", name)19}2021func (t ToolsManager) Add(tool Tool) {22t[tool.Name()] = tool23}2425func (t ToolsManager) Names() []string {26names := make([]string, 0, len(t))27for name := range t {28if tool, err := t.Get(name); err == nil && tool.IsReady() {29names = append(names, name)30}31}32sort.Strings(names)33return names34}3536func (t ToolsManager) Items() []model.SettingItem {37var items []model.SettingItem38for _, tool := range t {39items = append(items, tool.Items()...)40}41return items42}434445