package main import ( "bufio" "fmt" "gosh/cmd" "gosh/types" "os" "strings" "github.com/fatih/color" ) func gosh_print_output(cmdo types.CmdOutput) { switch cmdo.Id { case 0: fmt.Printf(cmdo.Output) case 1: fmt.Printf("Error: %s\n", cmdo.Output) } } func parse_flags(parts []string) (map[string]string, []string) { flags := make(map[string]string) args := []string{} i := 0 for i < len(parts) { if strings.HasPrefix(parts[i], "-") { key := parts[i] val := "" if i+1 < len(parts) && !strings.HasPrefix(parts[i+1], "-") { val = parts[i+1] i++ } flags[key] = val } else { args = append(args, parts[i]) } i++ } return flags, args } func gosh_process_input(sh *types.Shell, input string) { // Split by pipe and trim spaces commands := strings.Split(input, "|") var prevOutput types.CmdOutput for _, cmdStr := range commands { cmdStr = strings.TrimSpace(cmdStr) parts := strings.Fields(cmdStr) if len(parts) == 0 { continue } switch parts[0] { case "pwd": prevOutput = cmd.GoshPwd(sh) case "cd": if len(parts) < 2 { fmt.Println("Usage: cd