76 lines
1.6 KiB
Go
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)
|
|
|
|
}
|