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 }