Files
server/main.go
T

76 lines
1.6 KiB
Go

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