Skip to content

Commit 994f870

Browse files
Merge pull request #5 from merschformann/merschformann/less-aggressive-config-management
Offer reset config and fix darwin/arm64 build
2 parents e1260f1 + 7d195c1 commit 994f870

File tree

5 files changed

+48
-13
lines changed

5 files changed

+48
-13
lines changed

Diff for: core/auxiliary.go

+21
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package core
22

33
import (
4+
"bufio"
5+
"fmt"
6+
"os"
47
"strconv"
58
"strings"
69

@@ -39,3 +42,21 @@ func convertHexToRgb(hex string) (r, g, b uint8, err error) {
3942
b = uint8(rgb & 0x0000ff)
4043
return r, g, b, nil
4144
}
45+
46+
// AskUser asks the user a yes/no question and returns true if the user answers
47+
// yes.
48+
func AskUser(question string) (bool, error) {
49+
// Ask the user
50+
fmt.Printf("%s (y/N): ", question)
51+
// Read user input
52+
reader := bufio.NewReader(os.Stdin)
53+
input, err := reader.ReadString('\n')
54+
if err != nil {
55+
return false, err
56+
}
57+
// Normalize input
58+
input = strings.ToLower(input)
59+
input = strings.TrimSpace(input)
60+
// Check input
61+
return input == "y" || input == "yes", nil
62+
}

Diff for: core/configuration.go

+7-9
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package core
22

33
import (
44
"encoding/json"
5+
"errors"
56
"fmt"
67
"io/ioutil"
78
"os"
@@ -150,37 +151,34 @@ func defaultConfigFile() string {
150151
func Load() (Config, error) {
151152
// If no configuration file exists, create one
152153
if _, err := os.Stat(defaultConfigFile()); os.IsNotExist(err) {
153-
return saveDefault()
154+
return SaveDefault()
154155
}
155156
// Read configuration file
156157
var config Config
157158
data, err := ioutil.ReadFile(defaultConfigFile())
158159
if err != nil {
159-
fmt.Println("Error reading config file (replacing with default config):", err)
160-
return saveDefault()
160+
return config, errors.New("Error reading config file: " + err.Error())
161161
}
162162
// Unmarshal
163163
err = json.Unmarshal(data, &config)
164164
if err != nil {
165-
fmt.Println("Error unmarshaling config file (replacing with default config):", err)
166-
return saveDefault()
165+
return config, errors.New("Error unmarshaling config file: " + err.Error())
167166
}
168167
// Check version
169168
if config.ConfigVersion != ConfigVersion {
170169
version := config.ConfigVersion
171170
if version == "" {
172171
version = "unknown"
173172
}
174-
fmt.Println("Configuration file version mismatch (replacing with default config), version found:", version)
175-
return saveDefault()
173+
return config, errors.New("Config file version " + version + " is not supported")
176174
}
177175
// Validate (replace invalid values with defaults)
178176
config = config.validate()
179177
return config, nil
180178
}
181179

182-
// saveDefault creates a default config and immediately saves it.
183-
func saveDefault() (Config, error) {
180+
// SaveDefault creates a default config and immediately saves it.
181+
func SaveDefault() (Config, error) {
184182
c := DefaultConfig()
185183
return c, c.Save()
186184
}

Diff for: main.go

+18-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,25 @@ import (
1010
func main() {
1111
// Get configuration
1212
config, err := core.Load()
13+
// If there was an error loading the config, offer the user the option to
14+
// reset it (or simply exit).
1315
if err != nil {
14-
fmt.Println("error handling configuration:", err)
15-
os.Exit(1)
16+
fmt.Println("error loading configuration:", err)
17+
// Ask the user if they want to reset the config
18+
if ok, in_err := core.AskUser("Reset configuration?"); in_err != nil {
19+
fmt.Println("error asking user:", in_err)
20+
os.Exit(1)
21+
} else if ok {
22+
// Reset config
23+
config, in_err = core.SaveDefault()
24+
if in_err != nil {
25+
fmt.Println("error resetting configuration:", in_err)
26+
os.Exit(1)
27+
}
28+
} else {
29+
// Exit
30+
os.Exit(0)
31+
}
1632
}
1733
// Parse flags
1834
config, t, changed, err := core.ParseFlags(config, Version)

Diff for: material/scripts/buildall.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env bash
22

33
# Specify platforms to build for
4-
platforms=("linux/amd64" "linux/arm64" "darwin/amd64" "darwin/arm64", "windows/amd64")
4+
platforms=("linux/amd64" "linux/arm64" "darwin/amd64" "darwin/arm64" "windows/amd64")
55

66
# Clean build directory
77
builddir="build"

Diff for: version.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
package main
22

3-
const Version = "v0.1.0"
3+
const Version = "v0.1.1"

0 commit comments

Comments
 (0)