hatecomputers.club/args/args.go

54 lines
1.4 KiB
Go

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
}