htmltools

Various command line tools to transform HTML documents
git clone git://git.entf.net/htmltools
Log | Files | Refs | README | LICENSE

cmd.go (772B)


      1 package cmd
      2 
      3 import (
      4 	"fmt"
      5 	"io"
      6 	"os"
      7 
      8 	"golang.org/x/net/html"
      9 )
     10 
     11 func readerFromFile(file string) (f io.Reader, name string, err error) {
     12 	if file == "-" {
     13 		name = "[stdin]"
     14 		f = os.Stdin
     15 	} else {
     16 		name = file
     17 		f, err = os.Open(file)
     18 		if err != nil {
     19 			return
     20 		}
     21 	}
     22 	return
     23 }
     24 
     25 func logErr(fileName string, err error) {
     26 	fmt.Fprintf(os.Stderr, "%s: %v\n", fileName, err)
     27 }
     28 
     29 func Fatal(err error) {
     30 	fmt.Fprintf(os.Stderr, "%v\n", err)
     31 }
     32 
     33 func Main(args []string, handleFunc func(*html.Node)) {
     34 	if len(args) == 0 {
     35 		args = append(args, "-")
     36 	}
     37 	for _, a := range args {
     38 		f, fn, err := readerFromFile(a)
     39 		if err != nil {
     40 			logErr(fn, err)
     41 			continue
     42 		}
     43 		doc, err := html.Parse(f)
     44 		if err != nil {
     45 			logErr(fn, err)
     46 			return
     47 		}
     48 		handleFunc(doc)
     49 	}
     50 }