Files
gosom__google-maps-scraper/main.go
T

85 lines
1.8 KiB
Go
Raw Normal View History

2023-04-22 17:37:57 +03:00
package main
import (
"context"
"errors"
2024-09-28 08:49:48 +03:00
"fmt"
"log"
2023-04-22 17:37:57 +03:00
"os"
"os/signal"
"syscall"
2023-04-22 17:37:57 +03:00
"github.com/gosom/google-maps-scraper/runner"
"github.com/gosom/google-maps-scraper/runner/databaserunner"
"github.com/gosom/google-maps-scraper/runner/filerunner"
"github.com/gosom/google-maps-scraper/runner/installplaywright"
"github.com/gosom/google-maps-scraper/runner/lambdaaws"
"github.com/gosom/google-maps-scraper/runner/webrunner"
2023-04-22 17:37:57 +03:00
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
runner.Banner()
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
go func() {
<-sigChan
log.Println("Received signal, shutting down...")
cancel()
}()
cfg := runner.ParseConfig()
runnerInstance, err := runnerFactory(cfg)
if err != nil {
cancel()
os.Stderr.WriteString(err.Error() + "\n")
runner.Telemetry().Close()
os.Exit(1)
}
if err := runnerInstance.Run(ctx); err != nil && !errors.Is(err, context.Canceled) {
os.Stderr.WriteString(err.Error() + "\n")
2023-05-07 09:31:41 +03:00
_ = runnerInstance.Close(ctx)
runner.Telemetry().Close()
2023-05-07 09:31:41 +03:00
cancel()
os.Exit(1)
2023-04-22 17:37:57 +03:00
}
2023-05-07 09:31:41 +03:00
_ = runnerInstance.Close(ctx)
runner.Telemetry().Close()
2023-04-22 17:37:57 +03:00
cancel()
os.Exit(0)
}
func runnerFactory(cfg *runner.Config) (runner.Runner, error) {
switch cfg.RunMode {
case runner.RunModeFile:
return filerunner.New(cfg)
case runner.RunModeDatabase, runner.RunModeDatabaseProduce:
return databaserunner.New(cfg)
case runner.RunModeInstallPlaywright:
return installplaywright.New(cfg)
case runner.RunModeWeb:
return webrunner.New(cfg)
case runner.RunModeAwsLambda:
return lambdaaws.New(cfg)
case runner.RunModeAwsLambdaInvoker:
return lambdaaws.NewInvoker(cfg)
default:
return nil, fmt.Errorf("%w: %d", runner.ErrInvalidRunMode, cfg.RunMode)
2023-04-22 17:37:57 +03:00
}
2024-09-28 08:49:48 +03:00
}