package main

import (
	"flag"
	"log"
	"net/http"

	"git-browser/internal/repository"
	"git-browser/internal/web"
)

func main() {
	sshUser := flag.String("ssh-user", "git", "SSH user allowed to access repositories")
	cloneRoot := flag.String("cloneroot", "", "repositories location root used for generating clone URLs (relative to the ssh user's home directory)")
	root := flag.String("root", "repos", "where the actual repositories are stored (absolute path)")
	listen := flag.String("listen", ":8080", "HTTP listen address")
	flag.Parse()

	store, err := repository.Discover(*root)
	if err != nil {
		log.Fatalf("discover repositories: %v", err)
	}

	server, err := web.NewServer(store, web.Config{
		SSHUser:   *sshUser,
		CloneRoot: *cloneRoot,
	})
	if err != nil {
		log.Fatalf("create server: %v", err)
	}

	log.Printf("serving %s on %s", store.Root(), *listen)
	if err := http.ListenAndServe(*listen, server.Handler()); err != nil {
		log.Fatal(err)
	}
}