// Copyright (C) 2017 Marius Schellenberger package main import ( "flag" "fmt" "github.com/russross/blackfriday" "io" "io/ioutil" "net/http" "os" "os/exec" ) var ( file string srv bool md string ) func main() { flag.StringVar(&file, "f", "", "markdown file to parse") flag.BoolVar(&srv, "srv", false, "start server and open new browser tab") flag.Parse() var ( r io.Reader err error ) switch file { case "": r = os.Stdin default: r, err = os.Open(file) fatal(err) } buf, err := ioutil.ReadAll(r) fatal(err) md = string(blackfriday.MarkdownCommon(buf)) if !srv { fmt.Println(md) return } md = "" + md + "" http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte(md)) }) go func() { exec.Command("xdg-open", "http://127.0.0.1:8090").Start() }() fatal(http.ListenAndServe(":8090", nil)) } func fatal(err error) { if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } }