-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
103 lines (81 loc) · 1.98 KB
/
main.go
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package main
import (
"fmt"
"os"
log "github.com/gkontos/bivalve-chronicles"
"github.com/gkontos/spiny-dogfish/cmd"
"github.com/gkontos/spiny-dogfish/config"
"github.com/gkontos/spiny-dogfish/model"
"github.com/manifoldco/promptui"
)
const (
exitAction = "Exit"
viewProfileAction = "View Profile Configuration"
optimizeConfigAction = "Optimize Configuration"
)
var organizer *cmd.Pruner
func main() {
v := getConfig()
setupLogging()
log.Info("Welcome to the Properties Compactor")
log.Debugf("getConfig result: %v", v)
setupApplication(&v.App)
action, err := getAction()
organizer.ConfigFiles = make(map[int8][]model.JavaConfigFileMetadata)
organizer.LoadConfigFileMetadata()
for {
if err != nil {
log.Errorf("Error: %v", err)
}
if action == exitAction {
break
}
if action == viewProfileAction {
organizer.RunInitialLoad()
}
if action == optimizeConfigAction {
organizer.PruneProperties()
}
action, err = getAction()
}
}
func getAction() (string, error) {
prompt := promptui.Select{
Label: "Select Action",
Items: []string{exitAction, viewProfileAction, optimizeConfigAction},
}
_, result, err := prompt.Run()
if err != nil {
log.Errorf("Prompt failed %v\n", err)
return "", err
}
log.Infof("You choose %q\n", result)
return result, nil
}
func getConfig() *config.AppConfig {
var filename string
if _, err := os.Stat("config.toml"); err == nil {
filename = "config.toml"
} else {
panic("No configuration available. Exiting.")
}
if conf, err := config.LoadAppConfig(filename); err != nil {
panic(fmt.Sprintf("Unable to get configuration - %s", err))
} else {
return conf
}
}
func setupApplication(appConf *config.Application) {
log.Debugf("in application %+v", appConf)
organizer = &cmd.Pruner{}
organizer.Config = appConf
}
func setupLogging() {
logconf := &log.LogConfig{
Output: "stdout",
Level: "info",
DisplayMinimal: true,
TerminalOutput: true,
}
log.Configure(logconf)
}