parseOutput wraps the Parse() function to also return stdout
(doc string, argv []string, help bool, version string, optionsFirst bool)
| 1497 | |
| 1498 | // parseOutput wraps the Parse() function to also return stdout |
| 1499 | func parseOutput(doc string, argv []string, help bool, version string, |
| 1500 | optionsFirst bool) (map[string]interface{}, string, error) { |
| 1501 | stdout := os.Stdout |
| 1502 | r, w, _ := os.Pipe() |
| 1503 | os.Stdout = w |
| 1504 | |
| 1505 | args, err := Parse(doc, argv, help, version, optionsFirst, false) |
| 1506 | |
| 1507 | outChan := make(chan string) |
| 1508 | go func() { |
| 1509 | var buf bytes.Buffer |
| 1510 | io.Copy(&buf, r) |
| 1511 | outChan <- buf.String() |
| 1512 | }() |
| 1513 | |
| 1514 | w.Close() |
| 1515 | os.Stdout = stdout |
| 1516 | output := <-outChan |
| 1517 | |
| 1518 | return args, output, err |
| 1519 | } |
| 1520 | |
| 1521 | var debugEnabled = false |
| 1522 |
no test coverage detected