package args import ( "flag" "strings" ) type Arguments struct { DatabasePath string TemplatePath string StaticPath string Migrate bool Scheduler bool NtfyEndpoint string NtfyBackupTopics []string NtfyAlertTopics []string Port int Server bool } func GetArgs() (*Arguments, error) { databasePath := flag.String("database-path", "./backupnotify.db", "Path to the SQLite database") templatePath := flag.String("template-path", "./templates", "Path to the template directory") staticPath := flag.String("static-path", "./static", "Path to the static directory") scheduler := flag.Bool("scheduler", false, "Run scheduled jobs via cron") migrate := flag.Bool("migrate", false, "Run the migrations") ntfyEndpoint := flag.String("ntfy-endpoint", "https://ntfy.sh", "") ntfyBackupTopics := flag.String("ntfy-topics", "server-backup", "") ntfyAlertTopics := flag.String("ntfy-alert-topics", "server-backup", "") port := flag.Int("port", 8080, "Port to listen on") server := flag.Bool("server", false, "Run the server") flag.Parse() arguments := &Arguments{ DatabasePath: *databasePath, TemplatePath: *templatePath, StaticPath: *staticPath, Port: *port, Server: *server, Migrate: *migrate, Scheduler: *scheduler, NtfyEndpoint: *ntfyEndpoint, NtfyBackupTopics: strings.Split(*ntfyBackupTopics, ","), NtfyAlertTopics: strings.Split(*ntfyAlertTopics, ","), } return arguments, nil }