Browse Source

Added forgotten default field

main
Unbewohnte 4 years ago committed by GitHub
parent
commit
8eded6b6b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 124
      settings.go

124
settings.go

@ -0,0 +1,124 @@
package settings
import (
"encoding/json"
"errors"
"fmt"
"os"
"github.com/Unbewohnte/OBM/logger"
"github.com/Unbewohnte/OBM/util"
)
const (
settingsFilename string = "settings.json"
)
// checks if the settings.json exists in current directory
func DoesExist() (bool, error) {
files, err := os.ReadDir(".")
if err != nil {
return false, errors.New(fmt.Sprintf("Unable to read current directory %s", err))
}
for _, file := range files {
if !file.IsDir() && file.Name() == settingsFilename {
return true, nil
}
}
return false, nil
}
// creates "settings.json" in current directory
func Create() error {
exists, err := DoesExist()
if err != nil {
return err
}
if exists {
return nil
}
file, err := os.Create(settingsFilename)
if err != nil {
return errors.New(fmt.Sprintf("Unable to create settings file : %s", err))
}
// marshaling default settings
settingsJson, err := json.MarshalIndent(Settings{
OsuDir: "",
BackgroundReplacement: backgroundReplacement{
Enabled: true,
ReplacementImagePath: "",
},
BackgroundRetrievement: backgroundRetrievement{
Enabled: false,
RetrievementPath: "",
},
BackgroundRemovement: backgroundRemovement{
Enabled: false,
},
CreateBlackBGImage: backgroundCreatement{
Enabled: true,
Width: 1920,
Height: 1080,
},
Workers: 100,
}, "", " ")
if err != nil {
return errors.New(fmt.Sprintf("Could not marshal settings into file : %s", err))
}
file.Write(settingsJson)
file.Close()
return nil
}
// unmarshalls settings.json into struct and processes the edge-cases
func Get() Settings {
settingsFileContents, err := os.ReadFile(settingsFilename)
if err != nil {
logger.LogError(true, fmt.Sprintf("Could not read settings file : %s", err))
}
var settings Settings
err = json.Unmarshal(settingsFileContents, &settings)
if err != nil {
logger.LogError(true, fmt.Sprintf("Could not unmarshal json file : %s", err))
}
// if all features are disabled
if !settings.BackgroundReplacement.Enabled && !settings.BackgroundRetrievement.Enabled {
logger.LogInfo("No features enabled. Exiting...")
os.Exit(0)
}
// checking for edge cases or mistakes made in the settings file,
// enabled and disabled fields
if settings.BackgroundReplacement.Enabled {
if settings.BackgroundReplacement.ReplacementImagePath == "" || settings.BackgroundReplacement.ReplacementImagePath == " " {
logger.LogError(true, "`replacementImagePath` is not specified !")
} else if !util.IsImage(settings.BackgroundReplacement.ReplacementImagePath) {
logger.LogError(true, "`replacementImagePath` is pointing to a non-image file !`")
}
} else {
settings.BackgroundReplacement.ReplacementImagePath = ""
}
if settings.BackgroundRetrievement.Enabled {
if settings.BackgroundRetrievement.RetrievementPath == "" || settings.BackgroundRetrievement.RetrievementPath == " " {
logger.LogError(true, "`retrievementPath` is not specified !")
}
} else {
settings.BackgroundRetrievement.RetrievementPath = ""
}
if settings.Workers <= 0 {
settings.Workers = 1
logger.LogWarning("`workers` is set to 0 or less. Replaced with 1")
}
return settings
}
Loading…
Cancel
Save