z_mirror/fmm

git clone https://git.raiguard.me/z_mirror/fmm

Caleb HeuerSimplify CLI parsingb5f7331

predep-parsing
934 B47 linesraw
1package main
2
3import (
4	"fmt"
5	"os"
6
7	"github.com/vaughan0/go-ini"
8)
9
10func abort(msg ...any) {
11	errorln(msg...)
12	os.Exit(1)
13}
14
15func errorln(msg ...any) {
16	fmt.Fprintln(os.Stderr, msg...)
17}
18
19func errorf(format string, msg ...any) {
20	fmt.Fprintf(os.Stderr, format, msg...)
21}
22
23func getFromEnvOrConfig(env string, file ini.File, section string, key string) string {
24	if value := os.Getenv(env); value != "" {
25		return value
26	} else if value, ok := file.Get(section, key); ok {
27		return value
28	}
29	return ""
30}
31
32func parseConfig(path string) error {
33	file, err := ini.LoadFile(path)
34	if err != nil {
35		return err
36	}
37
38	if dir, ok := file.Get("", "mods_dir"); ok {
39		modsDir = dir
40	}
41
42	apiKey = getFromEnvOrConfig("FACTORIO_API_KEY", file, "portal", "api_key")
43	downloadToken = getFromEnvOrConfig("FACTORIO_TOKEN", file, "portal", "token")
44	downloadUsername = getFromEnvOrConfig("FACTORIO_USERNAME", file, "portal", "username")
45
46	return nil
47}