go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/_motor/providers/os/cmd/sudo.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package cmd
     5  
     6  import (
     7  	"fmt"
     8  	"strings"
     9  )
    10  
    11  type Wrapper interface {
    12  	Build(cmd string) string
    13  }
    14  
    15  func NewSudo() *Sudo {
    16  	return &Sudo{
    17  		user:       "",
    18  		executable: "sudo",
    19  		shell:      "",
    20  	}
    21  }
    22  
    23  type Sudo struct {
    24  	user       string
    25  	executable string
    26  	shell      string
    27  }
    28  
    29  func (sudo *Sudo) Build(cmd string) string {
    30  	var sb strings.Builder
    31  
    32  	sb.WriteString(sudo.executable)
    33  
    34  	if len(sudo.user) > 0 {
    35  		user := fmt.Sprintf(" -u %s", sudo.user)
    36  		sb.WriteString(user)
    37  	}
    38  
    39  	if len(sudo.shell) > 0 {
    40  		cmd = fmt.Sprintf(" %s -c %s", sudo.shell, cmd)
    41  		sb.WriteString(cmd)
    42  	} else {
    43  		sb.WriteString(" ")
    44  		sb.WriteString(cmd)
    45  	}
    46  
    47  	return sb.String()
    48  }