go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/groups/manager.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package groups 5 6 import ( 7 "errors" 8 9 "go.mondoo.com/cnquery/providers/os/connection/shared" 10 ) 11 12 func ResolveManager(conn shared.Connection) (OSGroupManager, error) { 13 var gm OSGroupManager 14 15 asset := conn.Asset() 16 if asset == nil || asset.Platform == nil { 17 return nil, errors.New("cannot find OS information for users detection") 18 } 19 20 // check darwin before unix since darwin is also a unix 21 if asset.Platform.IsFamily("darwin") { 22 gm = &OSXGroupManager{conn: conn} 23 } else if asset.Platform.IsFamily("unix") { 24 gm = &UnixGroupManager{conn: conn} 25 } else if asset.Platform.IsFamily("windows") { 26 gm = &WindowsGroupManager{conn: conn} 27 } 28 29 if gm == nil { 30 return nil, errors.New("could not detect suitable group manager for platform: " + asset.Platform.Name) 31 } 32 33 return gm, nil 34 }