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) } }