Compare commits
2 Commits
1ecaeb97e3
...
bb620b3d9b
Author | SHA1 | Date |
---|---|---|
|
bb620b3d9b | |
|
9b401ef56b |
|
@ -10,6 +10,26 @@ import (
|
||||||
func main() {
|
func main() {
|
||||||
m := testMachine()
|
m := testMachine()
|
||||||
testPackages(m)
|
testPackages(m)
|
||||||
|
|
||||||
|
loop := m.Packages.SortByName()
|
||||||
|
for loop.Scan() {
|
||||||
|
p := loop.Package()
|
||||||
|
log.Info("installed package:", p.Name, p.Version, p.PkgName)
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.IsInstalled("bash") {
|
||||||
|
log.Info("bash installed check worked")
|
||||||
|
} else {
|
||||||
|
log.Info("bash installed check failed")
|
||||||
|
panic("bash")
|
||||||
|
}
|
||||||
|
|
||||||
|
if m.IsInstalled("foo") {
|
||||||
|
log.Info("foo not-installed check failed")
|
||||||
|
panic("foo")
|
||||||
|
} else {
|
||||||
|
log.Info("foo not-installed check worked")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func testMachine() *zoopb.Machine {
|
func testMachine() *zoopb.Machine {
|
||||||
|
@ -20,14 +40,13 @@ func testMachine() *zoopb.Machine {
|
||||||
}
|
}
|
||||||
|
|
||||||
func testPackages(m *zoopb.Machine) {
|
func testPackages(m *zoopb.Machine) {
|
||||||
var all *zoopb.Packages
|
m.Packages = new(zoopb.Packages)
|
||||||
all = new(zoopb.Packages)
|
|
||||||
// r = zoopb.LoadJSON("go.wit.com/lib/protobuf/zoopb")
|
// r = zoopb.LoadJSON("go.wit.com/lib/protobuf/zoopb")
|
||||||
|
|
||||||
new1 := new(zoopb.Package)
|
new1 := new(zoopb.Package)
|
||||||
new1.Name = "bash"
|
new1.Name = "bash"
|
||||||
new1.Version = "5.2.21"
|
new1.Version = "5.2.21"
|
||||||
if all.Append(new1) {
|
if m.Packages.Append(new1) {
|
||||||
log.Info("added", new1.Name, "ok")
|
log.Info("added", new1.Name, "ok")
|
||||||
} else {
|
} else {
|
||||||
log.Info("added", new1.Name, "failed")
|
log.Info("added", new1.Name, "failed")
|
||||||
|
@ -36,17 +55,17 @@ func testPackages(m *zoopb.Machine) {
|
||||||
new2 := new(zoopb.Package)
|
new2 := new(zoopb.Package)
|
||||||
new2.Name = "go-clone"
|
new2.Name = "go-clone"
|
||||||
new2.Version = "0.6.8" // good version of the macos
|
new2.Version = "0.6.8" // good version of the macos
|
||||||
if all.Append(new2) {
|
if m.Packages.Append(new2) {
|
||||||
log.Info("added", new2.Name, "ok")
|
log.Info("added", new2.Name, "ok")
|
||||||
} else {
|
} else {
|
||||||
log.Info("added", new2.Name, "failed")
|
log.Info("added", new2.Name, "failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
if all.Append(new2) {
|
if m.Packages.Append(new2) {
|
||||||
log.Info("added", new2.Name, "ok (this is bad)")
|
log.Info("added", new2.Name, "ok (this is bad)")
|
||||||
} else {
|
} else {
|
||||||
log.Info("added", new2.Name, "failed (but ok)")
|
log.Info("added", new2.Name, "failed (but ok)")
|
||||||
}
|
}
|
||||||
|
|
||||||
fmt.Println("packages are:", len(all.Packages))
|
fmt.Println("package count = ", m.Packages.Len())
|
||||||
}
|
}
|
||||||
|
|
67
wit.go
67
wit.go
|
@ -11,9 +11,70 @@ var VERSION string
|
||||||
var BUILDTIME string
|
var BUILDTIME string
|
||||||
|
|
||||||
func (m *Machine) IsInstalled(name string) bool {
|
func (m *Machine) IsInstalled(name string) bool {
|
||||||
|
loop := m.Packages.SortByName()
|
||||||
|
for loop.Scan() {
|
||||||
|
p := loop.Package()
|
||||||
|
if name == p.Name {
|
||||||
|
// log.Info("package installed:", p.Name, p.Version, p.PkgName)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// log.Info("package not-installed:", name)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Machine) FindInstalledByName(name string) *Package {
|
||||||
|
loop := m.Packages.SortByName()
|
||||||
|
for loop.Scan() {
|
||||||
|
p := loop.Package()
|
||||||
|
if name == p.Name {
|
||||||
|
// log.Info("package installed:", p.Name, p.Version, p.PkgName)
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// log.Info("package not-installed:", name)
|
||||||
|
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, version string) *Package {
|
||||||
|
// first check all installed versions
|
||||||
|
loop := m.Packages.SortByName()
|
||||||
|
for loop.Scan() {
|
||||||
|
p := loop.Package()
|
||||||
|
if name == p.Name {
|
||||||
|
if version == "" {
|
||||||
|
return p
|
||||||
|
} else {
|
||||||
|
if version == p.Version {
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check all wit packages
|
||||||
|
loop = m.Wit.SortByName()
|
||||||
|
for loop.Scan() {
|
||||||
|
p := loop.Package()
|
||||||
|
if name == p.Name {
|
||||||
|
if version == "" {
|
||||||
|
return p
|
||||||
|
} else {
|
||||||
|
if version == p.Version {
|
||||||
|
return p
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// log.Info("package not-installed:", name)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// read the package list file from mirrors.wit.com
|
// read the package list file from mirrors.wit.com
|
||||||
func (m *Machine) InitWit() error {
|
func (m *Machine) InitWit() error {
|
||||||
if m.Wit == nil {
|
if m.Wit == nil {
|
||||||
|
@ -117,10 +178,10 @@ func parsePackageInfo(lines string) *Package {
|
||||||
}
|
}
|
||||||
|
|
||||||
p := Package{
|
p := Package{
|
||||||
Name: name,
|
Name: name,
|
||||||
Version: version,
|
Version: version,
|
||||||
PkgName: filename,
|
PkgName: filename,
|
||||||
SrcPath: gopath,
|
SrcPath: gopath,
|
||||||
}
|
}
|
||||||
|
|
||||||
return &p
|
return &p
|
||||||
|
|
Loading…
Reference in New Issue