summaryrefslogtreecommitdiff
path: root/args/args.go
blob: 9176d27cf6ddc9970ad9ad23c002fd249290be2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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
}