Example #1
0
func _main_gvcf_to_rotini(c *cli.Context) {
	var e error

	infn_slice := c.StringSlice("input")
	if len(infn_slice) < 1 {
		infn_slice = append(infn_slice, "-")
	}

	ain, err := autoio.OpenReadScanner(infn_slice[0])
	if err != nil {
		fmt.Fprintf(os.Stderr, "%v", err)
		os.Stderr.Sync()
		os.Exit(1)
	}
	defer ain.Close()

	fp := os.Stdin
	if c.String("refstream") != "-" {
		fp, e = os.Open(c.String("refstream"))
		if e != nil {
			fmt.Fprintf(os.Stderr, "%v", e)
			os.Stderr.Sync()
			os.Exit(1)
		}
		defer fp.Close()
	}
	ref_stream := bufio.NewReader(fp)

	out := bufio.NewWriter(os.Stdout)

	g := gvcf.GVCFRefVar{}
	g.Init()

	line_no := 0
	g.PastaBegin(out)
	for ain.ReadScan() {
		gvcf_line := ain.ReadText()
		line_no++

		if len(gvcf_line) == 0 || gvcf_line == "" {
			continue
		}
		e := g.Pasta(gvcf_line, ref_stream, out)
		if e != nil {
			fmt.Fprintf(os.Stderr, "ERROR: %v at line %v\n", e, line_no)
			return
		}
	}
	g.PastaEnd(out)

	out.Flush()

}