diff options
| author | Ondřej Surý <ondrej@sury.org> | 2012-02-29 11:23:13 +0100 |
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2012-02-29 11:23:13 +0100 |
| commit | b6d7097a0d6072199f2cd74d67404890697cf78a (patch) | |
| tree | a2193c528a79fd5606507568859ee5067c6b86e4 /src/cmd/go/run.go | |
| parent | 4cecda6c347bd6902b960c6a35a967add7070b0d (diff) | |
| download | golang-b6d7097a0d6072199f2cd74d67404890697cf78a.tar.gz | |
Imported Upstream version 2012.02.22upstream-weekly/2012.02.22
Diffstat (limited to 'src/cmd/go/run.go')
| -rw-r--r-- | src/cmd/go/run.go | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/cmd/go/run.go b/src/cmd/go/run.go index 714cd4051..f317620e7 100644 --- a/src/cmd/go/run.go +++ b/src/cmd/go/run.go @@ -4,7 +4,12 @@ package main -import "strings" +import ( + "fmt" + "os" + "os/exec" + "strings" +) var cmdRun = &Command{ UsageLine: "run [-a] [-n] [-x] gofiles... [arguments...]", @@ -28,9 +33,14 @@ func init() { cmdRun.Flag.BoolVar(&buildX, "x", false, "") } +func printStderr(args ...interface{}) (int, error) { + return fmt.Fprint(os.Stderr, args...) +} + func runRun(cmd *Command, args []string) { var b builder b.init() + b.print = printStderr i := 0 for i < len(args) && strings.HasSuffix(args[i], ".go") { i++ @@ -52,6 +62,19 @@ func (b *builder) runProgram(a *action) error { return nil } } - run(a.deps[0].target, a.args) + + runStdin(a.deps[0].target, a.args) return nil } + +// runStdin is like run, but connects Stdin. +func runStdin(cmdargs ...interface{}) { + cmdline := stringList(cmdargs...) + cmd := exec.Command(cmdline[0], cmdline[1:]...) + cmd.Stdin = os.Stdin + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + errorf("%v", err) + } +} |
