Skip to content

Instantly share code, notes, and snippets.

@progrium
Last active August 13, 2016 00:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save progrium/d353426624e99a1b3352a1bfe2f5a28b to your computer and use it in GitHub Desktop.
Save progrium/d353426624e99a1b3352a1bfe2f5a28b to your computer and use it in GitHub Desktop.
execute and insert commands found in markdown inside ``` starting with #!

Hello world

#! ls -la

Hello world

#! ls -la
total 0
drwxr-xr-x   5 progrium  staff   170 Mar 23  2015 .
drwxr-xr-x  13 progrium  staff   442 Jun 14 14:31 ..
drwxr-xr-x  56 progrium  staff  1904 Aug 12 19:22 bin
drwxr-xr-x   3 progrium  staff   102 Mar 23  2015 pkg
drwxr-xr-x   9 progrium  staff   306 Jul 14 12:41 src
package main
import (
"fmt"
"io/ioutil"
"os"
"strings"
"github.com/lunixbochs/vtclean"
"github.com/progrium/go-shell"
)
func main() {
d, _ := ioutil.ReadAll(os.Stdin)
doc := string(d)
preparts := strings.SplitN(doc, "```\n#!", 2)
postparts := strings.SplitN(preparts[1], "```", 2)
cmdparts := strings.SplitN(postparts[0], "\n", 2)
cmdline := strings.Trim(cmdparts[0], " ")
output, _ := shell.Cmd(cmdline).OutputFn()()
fmt.Println(
strings.Join([]string{
preparts[0],
"```\n#! " + cmdline + "\n",
vtclean.Clean(output, false),
"\n```",
postparts[1],
}, ""))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment