package main import ( "flag" "log" "net/http" "os" "sync" "github.com/gorilla/mux" "riedstra.dev/mitch/steam-export/steam" ) var ( Logger = log.New(os.Stderr, "", log.LstdFlags) Listen = ":8899" libMu = &sync.RWMutex{} Lib *steam.Library ) func reloadLib() { libMu.Lock() defer libMu.Unlock() var err error Lib, err = steam.NewLibrary(DefaultLib) if err != nil { Logger.Printf("Error reopening library: %s", err) return } } func main() { fl := flag.NewFlagSet("steam-export", flag.ExitOnError) debug := fl.Bool("d", false, "Print line numbers in log") fl.StringVar(&Listen, "l", Listen, "What address do we listen on?") fl.StringVar(&DefaultLib, "L", DefaultLib, "Full path to default library") fl.Parse(os.Args[1:]) if *debug { Logger.SetFlags(log.LstdFlags | log.Llongfile) } var err error Lib, err = steam.NewLibrary(DefaultLib) if err != nil { Logger.Fatalf("While opening library path: %s", err) } go installer(getPath) r := mux.NewRouter() r.HandleFunc("/delete", gameDelete) r.HandleFunc("/install", gameInstaller) r.HandleFunc("/download/{game}", gameDownloader) r.HandleFunc("/style.css", cssHandler) r.HandleFunc("/", index) s := http.Server{ Handler: r, Addr: Listen, } go startBrowser() Logger.Fatal(s.ListenAndServe()) }