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  }