blob: 428d19c8d4587146f7fdf3ad9d497905ea81a44c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package main
import (
"os"
"path/filepath"
"syscall"
"time"
)
type statistics struct {
Name string;
Type string; //formula or cask
Desc string;
Outdated bool;
InstalledAsDependency bool;
InstalledOnRequest bool;
LastAccessTime time.Time;
InstalledVersion string;
Homepage string;
License string;
ReverseDependencies []string;
}
func UnifyInfo(formula *FormulaInfo, cask *CaskInfo, pkgName string) (*statistics) {
var statObject statistics
// === formula/cask specific === //
if formula != nil {
statObject.Name = formula.Name
statObject.Type = "formula"
statObject.Desc = formula.Desc
statObject.Homepage = formula.Homepage
statObject.License = formula.License
statObject.Outdated = formula.Outdated
// if installed
if len(formula.Installed) != 0 {
statObject.InstalledVersion = formula.Installed[0].Version
statObject.InstalledAsDependency = formula.Installed[0].InstalledAsDependency
statObject.InstalledOnRequest = formula.Installed[0].InstalledOnRequest
}
// get reverse dependencies
statObject.ReverseDependencies = GetBrewUses(pkgName)
} else if cask != nil {
statObject.Name = cask.Token
statObject.Type = "cask"
statObject.Desc = cask.Desc
statObject.Homepage = cask.Homepage
statObject.InstalledVersion = cask.Installed
statObject.Outdated = cask.Outdated
}
// === general === //
// get system atime
binPath := filepath.Join("/opt/homebrew/bin", pkgName)
info, err := os.Stat(binPath)
if err != nil {
return nil // skip if no binary is found
}
atime := info.Sys().(*syscall.Stat_t).Atimespec
statObject.LastAccessTime = time.Unix(atime.Unix())
return &statObject
}
|