From a7746033ee6a638135333c7809c1de33dec2ea0c Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Sat, 12 Apr 2025 07:33:06 +0100 Subject: [PATCH] fix: chassis can have multiple entries in smbios Closes #125 Signed-off-by: Brian McGee --- cmd/root.go | 3 ++- pkg/facter/smbios.go | 12 +++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 8e86cfa..4c2b830 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -4,12 +4,13 @@ import ( "encoding/json" "flag" "fmt" - "github.com/numtide/nixos-facter/pkg/udev" "log" "log/slog" "os" "strings" + "github.com/numtide/nixos-facter/pkg/udev" + "github.com/numtide/nixos-facter/pkg/build" "github.com/numtide/nixos-facter/pkg/facter" "github.com/numtide/nixos-facter/pkg/hwinfo" diff --git a/pkg/facter/smbios.go b/pkg/facter/smbios.go index 6adf7b0..069d4e9 100644 --- a/pkg/facter/smbios.go +++ b/pkg/facter/smbios.go @@ -21,7 +21,7 @@ type Smbios struct { Cache []hwinfo.Smbios `json:"cache,omitempty"` // Chassis holds information related to the system's chassis, including manufacturer, version, and lock presence. - Chassis *hwinfo.SmbiosChassis `json:"chassis,omitempty"` + Chassis []hwinfo.Smbios `json:"chassis,omitempty"` // Config captures system configuration options. Config *hwinfo.SmbiosConfig `json:"config,omitempty"` @@ -97,14 +97,6 @@ func (s *Smbios) add(item hwinfo.Smbios) error { } case hwinfo.SmbiosTypeCache: s.Cache = append(s.Cache, item) - case hwinfo.SmbiosTypeChassis: - if s.Chassis != nil { - return errors.New("chassis field is already set") - } else if chassis, ok := item.(*hwinfo.SmbiosChassis); !ok { - return fmt.Errorf("expected hwinfo.SmbiosChassis, found %T", item) - } else { - s.Chassis = chassis - } case hwinfo.SmbiosTypeConfig: if s.Config != nil { return errors.New("config field is already set") @@ -113,6 +105,8 @@ func (s *Smbios) add(item hwinfo.Smbios) error { } else { s.Config = config } + case hwinfo.SmbiosTypeChassis: + s.Chassis = append(s.Chassis, item) case hwinfo.SmbiosTypeGroupAssociations: s.GroupAssociations = append(s.GroupAssociations, item) case hwinfo.SmbiosTypeHardwareSecurity: