-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathmain.go
More file actions
71 lines (62 loc) · 1.97 KB
/
main.go
File metadata and controls
71 lines (62 loc) · 1.97 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// SPDX-License-Identifier: AGPL-3.0-or-later
// DMRHub - Run a DMR network server in a single binary
// Copyright (C) 2023-2026 Jacob McSwain
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//
// The source code is available at <https://github.com/USA-RedDragon/DMRHub>
package main
import (
"context"
"log/slog"
"os"
"path"
"github.com/USA-RedDragon/DMRHub/cmd"
"github.com/USA-RedDragon/DMRHub/internal/config"
"github.com/USA-RedDragon/configulator"
_ "github.com/tinylib/msgp/printer"
)
// https://goreleaser.com/cookbooks/using-main.version/
//
//nolint:gochecknoglobals
var (
version = "dev"
commit = "none"
)
func main() {
rootCmd := cmd.NewCommand(version, commit)
configDir, err := os.UserConfigDir()
if err != nil {
slog.Error("Failed to get user config directory.", "error", err.Error())
os.Exit(1)
}
c := configulator.New[config.Config]().
WithEnvironmentVariables(&configulator.EnvironmentVariableOptions{
Separator: "_",
}).
WithFile(&configulator.FileOptions{
Paths: []string{
"config.yaml",
"config.yml",
path.Join(configDir, "DMRHub", "config.yaml"),
path.Join(configDir, "DMRHub", "config.yml"),
},
}).
WithPFlags(rootCmd.Flags(), nil)
rootCmd.SetContext(c.WithContext(context.TODO()))
if err := rootCmd.Execute(); err != nil {
slog.Error("Encountered an error.", "error", err.Error())
os.Exit(1)
}
}