package main

import (
	"crypto/sha256"
	"flag"
	"fmt"
	"io"
	"os"
	"syscall"
	"time"
)

var watch = flag.String("watch", "", "Path to watch")
var reload = flag.String("reload", "", "Path to PID file")

func check(err error) {
	if err != nil {
		panic(err)
	}
}

func main() {
	flag.Parse()
	var prev string
	for {
		cur := func() string {
			inp, err := os.Open(*watch)
			check(err)
			defer inp.Close()
			h := sha256.New()
			_, err = io.Copy(h, inp)
			check(err)
			return string(h.Sum(nil))
		}()
		if prev == "" {
			prev = cur
			continue
		}
		if prev != cur {
			prev = cur
			fmt.Println("changed")
			pid := func() int {
				inp, err := os.Open(*reload)
				// TODO(gio): check error type
				if err != nil {
					return -1
				}
				defer inp.Close()
				var ret int
				_, err = fmt.Fscanf(inp, "%d", &ret)
				check(err)
				return ret
			}()
			if pid != -1 {
				p, err := os.FindProcess(pid)
				check(err)
				fmt.Println("found process")
				fmt.Println("%+v\n", p)
				// TODO(gio): take signal value from flags
				check(p.Signal(syscall.SIGKILL))
				fmt.Println("sent signall")
			}
		} else {
			fmt.Println("no change")
		}
		time.Sleep(5 * time.Second)
	}
}
