added data dir cli option
This commit is contained in:
+29
-14
@@ -9,6 +9,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
|
"path"
|
||||||
|
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
|
|
||||||
@@ -27,17 +28,22 @@ Valid commands:
|
|||||||
`
|
`
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var host = flag.String("host", "127.0.0.1:8000", "Set the web server host address.")
|
host := flag.String("host", "127.0.0.1:8000", "Set the web server host address.")
|
||||||
var debug = flag.Bool("debug", false, "Enable debug mode.")
|
debug := flag.Bool("debug", false, "Enable debug mode.")
|
||||||
var notapology = flag.Bool("no-tapology", false, "Disable scraping tapology")
|
no_tapology := flag.Bool("no-tapology", false, "Disable scraping tapology")
|
||||||
var noscraping = flag.Bool("no-scraping", false, "Disable scraping on runserver")
|
no_scraping := flag.Bool("no-scraping", false, "Disable scraping on runserver")
|
||||||
|
data_dir := flag.String("data-dir", "", "Directory for storing data")
|
||||||
|
cmd := flag.String("cmd", "runserver", "Command to run [runserver, scrape]")
|
||||||
|
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if len(flag.Args()) == 0 {
|
if *data_dir != "" {
|
||||||
fmt.Print(POSITIONAL_ARGS_HELP)
|
err := os.MkdirAll(*data_dir, 0666)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("Error creating data dir: %s\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if *debug {
|
if *debug {
|
||||||
slog.SetLogLoggerLevel(slog.LevelDebug)
|
slog.SetLogLoggerLevel(slog.LevelDebug)
|
||||||
@@ -45,7 +51,8 @@ func main() {
|
|||||||
slog.SetLogLoggerLevel(slog.LevelInfo)
|
slog.SetLogLoggerLevel(slog.LevelInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := os.OpenFile("mmaschedule.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
|
log_path := path.Join(*data_dir, "mmaschedule.log")
|
||||||
|
f, err := os.OpenFile(log_path, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Failed opening log file", err)
|
fmt.Println("Failed opening log file", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
@@ -55,28 +62,36 @@ func main() {
|
|||||||
w := io.MultiWriter(f, os.Stdout)
|
w := io.MultiWriter(f, os.Stdout)
|
||||||
log.SetOutput(w)
|
log.SetOutput(w)
|
||||||
|
|
||||||
cmd := flag.Args()[0]
|
|
||||||
|
|
||||||
client := NewScraperClient()
|
client := NewScraperClient()
|
||||||
db, err := InitDb("db.sqlite")
|
db_path := path.Join(*data_dir, "db.sqlite")
|
||||||
|
db, err := InitDb(db_path)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("Failed initializing database", "error", err)
|
slog.Error("Failed initializing database", "error", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
switch cmd {
|
slog.Info(
|
||||||
|
"Starting app",
|
||||||
|
"command", *cmd,
|
||||||
|
"host", *host,
|
||||||
|
"data_dir", *data_dir,
|
||||||
|
"log_path", log_path,
|
||||||
|
"db_path", db_path,
|
||||||
|
)
|
||||||
|
|
||||||
|
switch *cmd {
|
||||||
case "runserver":
|
case "runserver":
|
||||||
if !*noscraping {
|
if !*no_scraping {
|
||||||
slog.Debug("Starting scraping loop")
|
slog.Debug("Starting scraping loop")
|
||||||
go ScrapeEventsLoop(db, client, !*notapology)
|
go ScrapeEventsLoop(db, client, !*no_tapology)
|
||||||
}
|
}
|
||||||
err = RunServer(*host, db)
|
err = RunServer(*host, db)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("Error starting web server:", "error", err)
|
slog.Error("Error starting web server:", "error", err)
|
||||||
}
|
}
|
||||||
case "scrape":
|
case "scrape":
|
||||||
ScrapeEvents(db, client, !*notapology)
|
ScrapeEvents(db, client, !*no_tapology)
|
||||||
default:
|
default:
|
||||||
fmt.Print(POSITIONAL_ARGS_HELP)
|
fmt.Print(POSITIONAL_ARGS_HELP)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|||||||
Reference in New Issue
Block a user