46 lines
1.1 KiB
Go
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)
|
|
}
|
|
}
|