package args import ( "errors" "flag" "os" ) type Arguments struct { DatabasePath string TemplatePath string StaticPath string CloudflareToken string CloudflareZone string Port int Server bool Migrate bool } func GetArgs() (*Arguments, error) { port := flag.Int("port", 8080, "Port to listen on") databasePath := flag.String("database-path", "./hatecomputers.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") server := flag.Bool("server", false, "Run the server") migrate := flag.Bool("migrate", false, "Run the migrations") flag.Parse() cloudflareToken := os.Getenv("CLOUDFLARE_TOKEN") cloudflareZone := os.Getenv("CLOUDFLARE_ZONE") if cloudflareToken == "" { return nil, errors.New("please set the CLOUDFLARE_TOKEN environment variable") } if cloudflareZone == "" { return nil, errors.New("please set the CLOUDFLARE_ZONE environment variable") } arguments := &Arguments{ DatabasePath: *databasePath, TemplatePath: *templatePath, StaticPath: *staticPath, CloudflareToken: cloudflareToken, CloudflareZone: cloudflareZone, Port: *port, Server: *server, Migrate: *migrate, } return arguments, nil }