59 lines
988 B
Go
59 lines
988 B
Go
// 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 = "<html><body>" + md + "</body></html>"
|
|
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)
|
|
}
|
|
}
|