package main import ( "os" "path/filepath" _ "github.com/mattn/go-sqlite3" "github.com/op/go-logging" "github.com/restitux/ikinuki-server/config" "github.com/restitux/ikinuki-server/database" "github.com/restitux/ikinuki-server/rest" ) func get_data_dir() string { // Find data directory // Linux (XDG base directory specification compliant) xdg_data_home := os.Getenv("XDG_DATA_HOME") if xdg_data_home != "" { return filepath.Join(xdg_data_home, "ikinuki") } else { home := os.Getenv("HOME") return filepath.Join(home, ".local", "share", "ikinuki") } } var log = logging.MustGetLogger("ikinuki-server") func main() { var format = logging.MustStringFormatter( `%{color}%{time:15:04:05.000} %{level:.4s}:%{color:reset} %{message}`, ) backend := logging.NewLogBackend(os.Stderr, "", 0) backendFormatter := logging.NewBackendFormatter(backend, format) backendLeveled := logging.AddModuleLevel(backendFormatter) backendLeveled.SetLevel(logging.DEBUG, "") logging.SetBackend(backendLeveled) config_dir := config.GetConfigDir() config, err := config.GetConfig(config_dir) if err != nil { panic(err) } if config == nil { log.Warningf("Created config file at %v, please edit and launch again\n", config_dir) os.Exit(0) } log.Debugf("Config: %v\n", config) data_dir := get_data_dir() db, err := database.OpenDatabase(data_dir) if err != nil { log.Fatalf("Could not open database: %v", err) } defer db.Close() err = database.ScanTvshowRoot(config.ScanDirectory, db) if err != nil { log.Fatalf("Could not scan directory \"%v\": %v\n", config.ScanDirectory, err) } rest.RunHTTPServer(config.Address, config.Port, data_dir) }