mirror of
https://github.com/taigrr/wails.git
synced 2026-04-10 09:01:32 -07:00
96 lines
2.1 KiB
Go
96 lines
2.1 KiB
Go
package cmd
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/leaanthony/mewn"
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
type LinuxDB struct {
|
|
Distributions map[string]*Distribution `yaml:"distributions"`
|
|
}
|
|
|
|
type Distribution struct {
|
|
ID string `yaml:"id"`
|
|
Releases map[string]*Release `yaml:"releases"`
|
|
}
|
|
|
|
func (d *Distribution) GetRelease(name string) *Release {
|
|
result := d.Releases[name]
|
|
if result == nil {
|
|
result = d.Releases["default"]
|
|
}
|
|
return result
|
|
}
|
|
|
|
type Release struct {
|
|
Name string `yaml:"name"`
|
|
Version string `yaml:"version"`
|
|
Programs []*Prerequisite `yaml:"programs"`
|
|
Libraries []*Prerequisite `yaml:"libraries"`
|
|
}
|
|
|
|
type Prerequisite struct {
|
|
Name string `yaml:"name"`
|
|
Help string `yaml:"help,omitempty"`
|
|
}
|
|
|
|
func (l *LinuxDB) Load(filename string) error {
|
|
if fs.FileExists(filename) {
|
|
data, err := fs.LoadAsBytes(filename)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return l.ImportData(data)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (l *LinuxDB) ImportData(data []byte) error {
|
|
return yaml.Unmarshal(data, l)
|
|
}
|
|
|
|
func (l *LinuxDB) GetDistro(name string) *Distribution {
|
|
return l.Distributions[name]
|
|
}
|
|
|
|
// func (l *LinuxDB) GetDistribution(name string) *Distribution {
|
|
// return l.Distributions[name]
|
|
// }
|
|
|
|
// func (l *LinuxDB) Save() error {
|
|
// return fs.SaveAsJSON(l, l.filename)
|
|
// }
|
|
|
|
// func (l *LinuxDB) GetPreRequisistes(name string, version string) ([]*DistributionPrerequisite, error) {
|
|
// distro := l.GetDistribution(name)
|
|
// if distro == nil {
|
|
// return nil, fmt.Errorf("distribution %s unsupported at this time", name)
|
|
// }
|
|
|
|
// releaseInfo := distro.GetReleaseOrDefault(version)
|
|
// return releaseInfo.Prerequisites, nil
|
|
|
|
// }
|
|
|
|
// func (l *LinuxDBDistribution) GetReleaseOrDefault(release string) *DistributionRelease {
|
|
// result := l.Releases[release]
|
|
// if result == nil {
|
|
// result = l.Releases["default"]
|
|
// }
|
|
// return result
|
|
// }
|
|
|
|
func NewLinuxDB() *LinuxDB {
|
|
data := mewn.Bytes("./linuxdb.yaml")
|
|
result := LinuxDB{
|
|
Distributions: make(map[string]*Distribution),
|
|
}
|
|
err := result.ImportData(data)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return &result
|
|
}
|