package main

import (
	"flag"
	"log"
	"sync"

	"github.com/mholt/caddy/config"
	"github.com/mholt/caddy/server"
)

var conf string

func init() {
	flag.StringVar(&conf, "conf", server.DefaultConfigFile, "the configuration file to use")
}

func main() {
	var wg sync.WaitGroup

	flag.Parse()

	vhosts, err := config.Load(conf)
	if err != nil {
		if config.IsNotFound(err) {
			vhosts = config.Default()
		} else {
			log.Fatal(err)
		}
	}

	for _, conf := range vhosts {
		s, err := server.New(conf)
		if err != nil {
			log.Fatal(err)
		}
		wg.Add(1)
		go func(s *server.Server) {
			defer wg.Done()
			err := s.Serve()
			if err != nil {
				s.Log(err)
			}
		}(s)
	}

	wg.Wait()
}