package main

// PackageDef 定义了一个软件包的元数据结构
type PackageDef struct {
	Name        string `json:"name"`        // 包名（用户在命令行输入的名字）
	Version     string `json:"version"`     // 版本号
	Description string `json:"description"` // 简短描述
	URL         string `json:"url"`         // 真实下载链接
}

// Registry 是我们的本地软件源
// 以后添加新软件，只需要在这里追加一行即可
var Registry = []PackageDef{
	{
		Name:        "curl",
		Version:     "8.19.0_8",
		Description: "强大的命令行数据传输工具 (支持 HTTP/HTTPS)",
		URL:         "https://curl.se/windows/dl-8.19.0_8/curl-8.19.0_8-win64-mingw.zip",
	},
	{
		Name:        "jq",
		Version:     "1.7",
		Description: "轻量级命令行 JSON 处理器",
		URL:         "https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows64.exe",
	},
	{
		Name:        "neofetch",
		Version:     "7.1.0",
		Description: "显示系统信息的装逼工具",
		URL:         "https://gh-proxy.org/sourceforge/https://sourceforge.net/project/fastfetch.mirror/2.61.0/fastfetch-windows-amd64.zip", // 真链接
	},
}

// FindPackage 根据名字在注册表中查找包
// 找不到返回 nil
func FindPackage(name string) *PackageDef {
	for _, pkg := range Registry {
		if pkg.Name == name {
			return &pkg
		}
	}
	return nil
}

// ListPackages 返回所有可用的包
func ListPackages() []PackageDef {
	return Registry
}