Compare commits
No commits in common. "1ecaeb97e32fd71505e1398b9d58ac13dcf51470" and "6f6f28a22a479c80be7bb99cfdea4244cb667194" have entirely different histories.
1ecaeb97e3
...
6f6f28a22a
|
@ -10,8 +10,7 @@ message Package {
|
||||||
string version = 2; // version: 0.0.3
|
string version = 2; // version: 0.0.3
|
||||||
google.protobuf.Timestamp laststamp = 3; // the last time this package was seen (used to timeout entries)
|
google.protobuf.Timestamp laststamp = 3; // the last time this package was seen (used to timeout entries)
|
||||||
string srcPath = 4; // path to the sources (go.wit.com/apps/zookeeper)
|
string srcPath = 4; // path to the sources (go.wit.com/apps/zookeeper)
|
||||||
bool installed = 5; // if installed on your machine, this should be set to true
|
bool installed = 5; // installed: true
|
||||||
string pkgName = 6; // the apt filename pool/main/f/foo/foo_2.2.2_riscv64.deb
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message Packages {
|
message Packages {
|
||||||
|
|
127
wit.go
127
wit.go
|
@ -1,127 +0,0 @@
|
||||||
package zoopb
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
// sent via -ldflags
|
|
||||||
var VERSION string
|
|
||||||
var BUILDTIME string
|
|
||||||
|
|
||||||
func (m *Machine) IsInstalled(name string) bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// read the package list file from mirrors.wit.com
|
|
||||||
func (m *Machine) InitWit() error {
|
|
||||||
if m.Wit == nil {
|
|
||||||
m.Wit = new(Packages)
|
|
||||||
}
|
|
||||||
err := m.scanPackageListFile("/var/lib/apt/lists/mirrors.wit.com_wit_dists_sid_main_binary-amd64_Packages")
|
|
||||||
return err
|
|
||||||
/*
|
|
||||||
for _, p := range allpackages {
|
|
||||||
var all []string
|
|
||||||
for _, ver := range p.versions {
|
|
||||||
all = append(all, ver.v)
|
|
||||||
}
|
|
||||||
// log.Info(name, strings.Join(all, ", "))
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
// breaks up the apt list file into sections
|
|
||||||
// then sends each section to be processed
|
|
||||||
// and added to zoopb.Machine.Wit
|
|
||||||
func (m *Machine) scanPackageListFile(filename string) error {
|
|
||||||
file, err := os.Open(filename)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
scanner := bufio.NewScanner(file)
|
|
||||||
var debInfo string
|
|
||||||
for scanner.Scan() {
|
|
||||||
line := scanner.Text()
|
|
||||||
if line == "" {
|
|
||||||
p := parsePackageInfo(debInfo)
|
|
||||||
m.Wit.Append(p)
|
|
||||||
debInfo = ""
|
|
||||||
}
|
|
||||||
debInfo += line + "\n"
|
|
||||||
}
|
|
||||||
p := parsePackageInfo(debInfo)
|
|
||||||
m.Wit.Append(p)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
func (m *Machine) addPackage(name string, version string, filename string) {
|
|
||||||
if name == "" {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
// log.Info("addPackage:", name, version, filename)
|
|
||||||
var deb *DebPackage
|
|
||||||
var ok bool
|
|
||||||
deb, ok = allp[name]
|
|
||||||
if !ok {
|
|
||||||
deb = NewPackage()
|
|
||||||
deb.name.SetLabel(name)
|
|
||||||
allp[name] = deb
|
|
||||||
}
|
|
||||||
newversion := new(Version)
|
|
||||||
newversion.v = version
|
|
||||||
newversion.file = filename
|
|
||||||
deb.versions = append(deb.versions, newversion)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
// parses dpkg -s foo.deb
|
|
||||||
func parsePackageInfo(lines string) *Package {
|
|
||||||
var name string
|
|
||||||
var version string
|
|
||||||
var filename string
|
|
||||||
var gopath string
|
|
||||||
|
|
||||||
for _, line := range strings.Split(lines, "\n") {
|
|
||||||
if line == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(line, " ") {
|
|
||||||
// these are usually Description: lines
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if strings.HasPrefix(line, "#") {
|
|
||||||
// skip comment lines. (probably doesn't happen in debian list files
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
line = strings.TrimSpace(line)
|
|
||||||
parts := strings.Split(line, " ")
|
|
||||||
if len(parts) < 2 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if parts[0] == "Package:" {
|
|
||||||
name = parts[1]
|
|
||||||
}
|
|
||||||
if parts[0] == "Version:" {
|
|
||||||
version = parts[1]
|
|
||||||
}
|
|
||||||
if parts[0] == "Filename:" {
|
|
||||||
filename = parts[1]
|
|
||||||
}
|
|
||||||
if parts[0] == "GoPath:" {
|
|
||||||
gopath = parts[1]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p := Package{
|
|
||||||
Name: name,
|
|
||||||
Version: version,
|
|
||||||
PkgName: filename,
|
|
||||||
SrcPath: gopath,
|
|
||||||
}
|
|
||||||
|
|
||||||
return &p
|
|
||||||
}
|
|
Loading…
Reference in New Issue