From 7d8b99197f13378c0862d3f61e95846d3b553de2 Mon Sep 17 00:00:00 2001 From: Mark McGranaghan Date: Sun, 23 Sep 2012 19:36:24 -0700 Subject: [PATCH] processes bitches --- 062-spawning-processes/spawning-processes.go | 1 + tool/generate.go | 36 ++++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/062-spawning-processes/spawning-processes.go b/062-spawning-processes/spawning-processes.go index 44ac4b7..3fe1626 100644 --- a/062-spawning-processes/spawning-processes.go +++ b/062-spawning-processes/spawning-processes.go @@ -16,3 +16,4 @@ func main() { } // todo: full command lines with bash +// todo: piping in stdin diff --git a/tool/generate.go b/tool/generate.go index bbf10e5..b8316eb 100644 --- a/tool/generate.go +++ b/tool/generate.go @@ -1,30 +1,54 @@ +// Generate HTTML document form a Go source file. + package main import ( "os" "os/exec" + "io/ioutil" "fmt" ) +// Just be sure to blow up on non-nil errors. func check(err error) { if err != nil { panic(err) } } -func main() { - var err error +func markdown(path, source string) string { + cmd := exec.Command(path) + in, err := cmd.StdinPipe() + check(err) + out, err := cmd.StdoutPipe() + check(err) + err = cmd.Start() + check(err) + in.Write([]byte(source)) + check(err) + err = in.Close() + check(err) + bytes, err := ioutil.ReadAll(out) + check(err) + err = cmd.Wait() + check(err) + return string(bytes) +} +func main() { // Accept exactly 1 argument - the input filename. if len(os.Args) != 2 { fmt.Fprintln(os.Stderr, "Usage: tool/generate input.go > output.html") os.Exit(1) } - // Ensure that we have `markdown` and `pygmentize` binaries. + // Ensure that we have `markdown` and `pygmentize`, + // binaries, remember their paths. markdownPath, err := exec.LookPath("markdown"); check(err) - pygmentizePath, err := exec.LookPath("pygmentize") - check(err) - fmt.Println(markdownPath, pygmentizePath) + fmt.Print(markdown(markdownPath, "## wat")) + // pygmentizePath, err := exec.LookPath("pygmentize") + // check(err) + + // }