package zoopb import ( "strings" ) func (m *Machine) IsInstalled(name string) bool { if m == nil { panic("m == nil in zoopb") } if m.Packages == nil { panic("m.Packages nil in zoopb") } for p := range m.Packages.IterByPackage() { if name == p.Package { // log.Info("package installed:", p.Package, p.Version, p.PkgName) return true } } // log.Info("package not-installed:", name) return false } // this is a work in progress func (m *Machine) FindInstalledByName(name string) *Package { if m == nil { panic("m == nil") } if m.Packages == nil { panic("m.Packages == nil") } for p := range m.Packages.IterByFilename() { if name == p.Package { // log.Info("package installed:", p.Package, p.Version, p.PkgName) return p } } return nil } // looks to see if any package matches a name and version // if version == "", return the first name found func (m *Machine) FindVersion(name string) string { // first check all installed versions for p := range m.Packages.IterByPackage() { if name == p.Package { return p.Version } } return "" } func (m *Machine) FindInstalledPackage(check *Package) *Package { /* for p := range m.Packages.IterByName() { if (check.Package == p.Package) && (check.Version == p.Version) { return p } } */ for p := range m.Wit.IterByPackage() { if (check.Package == p.Package) && (check.Version == p.Version) { return p } } return nil } // looks to see if any package matches a name and version // if version == "", return the first name found func (m *Machine) FindByVersion(name string, version string) *Package { // first check all installed versions for p := range m.Packages.IterByPackage() { if name == p.Package { if version == "" { return p } else { if version == p.Version { return p } } } } // check all wit packages for p := range m.Wit.IterByPackage() { if name == p.Package { if version == "" { return p } if strings.HasPrefix(p.Version, version+"-") { return p } if strings.HasPrefix(p.Version, version+".") { return p } if version == p.Version { return p } } } // give anything with the same name for p := range m.Wit.IterByPackage() { if name == p.Package { return p } } // log.Info("package not-installed:", name) return nil }