MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / createCmdStrAndOpts

Function createCmdStrAndOpts

pkg/blockcontroller/shellcontroller.go:718–746  ·  view source on GitHub ↗

for "cmd" type blocks

(blockId string, blockMeta waveobj.MetaMapType, connName string)

Source from the content-addressed store, hash-verified

716
717// for "cmd" type blocks
718func createCmdStrAndOpts(blockId string, blockMeta waveobj.MetaMapType, connName string) (string, *shellexec.CommandOptsType, error) {
719 var cmdStr string
720 var cmdOpts shellexec.CommandOptsType
721 cmdStr = blockMeta.GetString(waveobj.MetaKey_Cmd, "")
722 if cmdStr == "" {
723 return "", nil, fmt.Errorf("missing cmd in block meta")
724 }
725 cmdOpts.Cwd = blockMeta.GetString(waveobj.MetaKey_CmdCwd, "")
726 if cmdOpts.Cwd != "" {
727 cwdPath, err := wavebase.ExpandHomeDir(cmdOpts.Cwd)
728 if err != nil {
729 return "", nil, err
730 }
731 cmdOpts.Cwd = cwdPath
732 }
733 useShell := blockMeta.GetBool(waveobj.MetaKey_CmdShell, true)
734 if !useShell {
735 if strings.Contains(cmdStr, " ") {
736 return "", nil, fmt.Errorf("cmd should not have spaces if cmd:shell is false (use cmd:args)")
737 }
738 cmdArgs := blockMeta.GetStringList(waveobj.MetaKey_CmdArgs)
739 // shell escape the args
740 for _, arg := range cmdArgs {
741 cmdStr = cmdStr + " " + utilfn.ShellQuote(arg, false, -1)
742 }
743 }
744 cmdOpts.ForceJwt = blockMeta.GetBool(waveobj.MetaKey_CmdJwt, false)
745 return cmdStr, &cmdOpts, nil
746}
747
748func (bc *ShellController) getBlockData_noErr() *waveobj.Block {
749 ctx, cancelFn := context.WithTimeout(context.Background(), DefaultTimeout)

Callers 1

Calls 5

ExpandHomeDirFunction · 0.92
ShellQuoteFunction · 0.92
GetStringMethod · 0.80
GetBoolMethod · 0.80
GetStringListMethod · 0.80

Tested by

no test coverage detected