package main

import (
	"fmt"
	"io"
	"log"
	"os"
	"t30/6/day-05/gfx"
)

func main() {
	if len(os.Args) <= 1 {
		fmt.Fprintln(os.Stderr, "usage:", os.Args[0], "noise|lissajous [outfile...]")
		os.Exit(1)
	}

	cmd := os.Args[1]
	var fnames []string

	if len(os.Args) == 2 {
		handleCmd(os.Stdout, cmd)
		os.Exit(0)
	}

	fnames = os.Args[2:]
	for _, fname := range fnames {
		of, err := os.Create(fname)
		if err != nil {
			log.Println(err)
			of.Close()
			continue
		}
		handleCmd(of, cmd)
		of.Close()
	}
}

func handleCmd(out io.Writer, cmd string) {
	switch cmd {
	case "noise":
		gfx.CreateNoise(out)
	case "lissajous":
		gfx.CreateLissajous(out)
	case "default":
		log.Printf("unknown command %q\n", cmd)
	}
}
