@@ -12,8 +12,10 @@ import (
12
12
"bytes"
13
13
"encoding/binary"
14
14
"encoding/gob"
15
+ "errors"
15
16
"fmt"
16
17
"io"
18
+ "io/fs"
17
19
"os"
18
20
"path/filepath"
19
21
"strconv"
@@ -49,7 +51,7 @@ const (
49
51
var (
50
52
rpmPath = "/var/lib/rpm"
51
53
dpkgPath = "/var/lib/dpkg"
52
- homebrewCellarPath = "/usr/local/Cellar"
54
+ homebrewCellarPath = [] string { "/usr/local/Cellar" , "/opt/homebrew/Cellar" }
53
55
)
54
56
55
57
type eventAction uint8
@@ -508,24 +510,27 @@ func (ms *MetricSet) getPackages() (packages []*Package, err error) {
508
510
return nil , fmt .Errorf ("error opening %v: %w" , dpkgPath , err )
509
511
}
510
512
511
- _ , err = os .Stat (homebrewCellarPath )
512
- if err == nil {
513
+ for _ , path := range homebrewCellarPath {
514
+ _ , err = os .Stat (path )
515
+ if err != nil {
516
+ if errors .Is (err , fs .ErrNotExist ) {
517
+ continue
518
+ }
519
+ return nil , fmt .Errorf ("error opening %v: %w" , path , err )
520
+ }
513
521
foundPackageManager = true
514
-
515
- homebrewPackages , err := listBrewPackages ()
522
+ homebrewPackages , err := listBrewPackages (path )
516
523
if err != nil {
517
524
return nil , fmt .Errorf ("error getting Homebrew packages: %w" , err )
518
525
}
519
526
ms .log .Debugf ("Homebrew packages: %v" , len (homebrewPackages ))
520
-
521
527
packages = append (packages , homebrewPackages ... )
522
- } else if err != nil && ! os .IsNotExist (err ) {
523
- return nil , fmt .Errorf ("error opening %v: %w" , homebrewCellarPath , err )
528
+ break
524
529
}
525
530
526
531
if ! foundPackageManager && ! ms .suppressNoPackageWarnings {
527
532
ms .log .Warnf ("No supported package managers found. None of %v, %v, %v exist." ,
528
- rpmPath , dpkgPath , homebrewCellarPath )
533
+ rpmPath , dpkgPath , strings . Join ( homebrewCellarPath , "," ) )
529
534
530
535
// Only warn once at the start of Auditbeat.
531
536
ms .suppressNoPackageWarnings = true
0 commit comments