Files
gonic/cmd/gonicscan/main.go
2020-04-24 01:57:17 +01:00

46 lines
1.1 KiB
Go

package main
import (
"flag"
"log"
"os"
_ "github.com/jinzhu/gorm/dialects/sqlite"
"github.com/peterbourgon/ff"
"go.senan.xyz/gonic/db"
"go.senan.xyz/gonic/scanner"
"go.senan.xyz/gonic/version"
)
func main() {
set := flag.NewFlagSet(version.NAME_SCAN, flag.ExitOnError)
musicPath := set.String("music-path", "", "path to music")
dbPath := set.String("db-path", "gonic.db", "path to database (optional)")
fullScan := set.Bool("full-scan", false, "ignore file modtimes while scanning (optional)")
if err := ff.Parse(set, os.Args[1:],
ff.WithEnvVarPrefix(version.NAME_UPPER),
); err != nil {
log.Fatalf("error parsing args: %v\n", err)
}
if _, err := os.Stat(*musicPath); os.IsNotExist(err) {
log.Fatal("please provide a valid music directory")
}
db, err := db.New(*dbPath)
if err != nil {
log.Fatalf("error opening database: %v\n", err)
}
defer db.Close()
s := scanner.New(*musicPath, db)
var scan func() error
switch {
case *fullScan:
scan = s.StartFull
default:
scan = s.StartInc
}
if err := scan(); err != nil {
log.Fatalf("error during scan: %v\n", err)
}
}