settings: Use pointer
This commit is contained in:
parent
dc64eb549f
commit
15afbb8b87
|
@ -54,7 +54,7 @@ func getSettings(_ httprouter.Params, body []byte) (interface{}, error) {
|
|||
}
|
||||
|
||||
func saveSettings(_ httprouter.Params, body []byte) (interface{}, error) {
|
||||
var config settings.FICSettings
|
||||
var config *settings.FICSettings
|
||||
if err := json.Unmarshal(body, &config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ func saveSettings(_ httprouter.Params, body []byte) (interface{}, error) {
|
|||
}
|
||||
}
|
||||
|
||||
func ApplySettings(config settings.FICSettings) {
|
||||
func ApplySettings(config *settings.FICSettings) {
|
||||
fic.PartialValidation = config.PartialValidation
|
||||
fic.UnlockedChallengeDepth = config.UnlockedChallengeDepth
|
||||
fic.DisplayAllFlags = config.DisplayAllFlags
|
||||
|
@ -83,7 +83,7 @@ func ApplySettings(config settings.FICSettings) {
|
|||
}
|
||||
|
||||
func ResetSettings() error {
|
||||
return settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), settings.FICSettings{
|
||||
return settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), &settings.FICSettings{
|
||||
Title: "Challenge FIC",
|
||||
Authors: "Laboratoire SRS, ÉPITA",
|
||||
WorkInProgress: IsProductionEnv,
|
||||
|
|
|
@ -203,7 +203,7 @@ func main() {
|
|||
log.Fatal("Unable to initialize settings.json:", err)
|
||||
}
|
||||
} else {
|
||||
var config settings.FICSettings
|
||||
var config *settings.FICSettings
|
||||
if config, err = settings.ReadSettings(path.Join(settings.SettingsDir, settings.SettingsFile)); err != nil {
|
||||
log.Fatal("Unable to read settings.json:", err)
|
||||
} else {
|
||||
|
|
|
@ -67,7 +67,7 @@ var ChStarted = false
|
|||
var lastRegeneration time.Time
|
||||
var skipInitialGeneration = false
|
||||
|
||||
func reloadSettings(config settings.FICSettings) {
|
||||
func reloadSettings(config *settings.FICSettings) {
|
||||
allowRegistration = config.AllowRegistration
|
||||
canJoinTeam = config.CanJoinTeam
|
||||
denyTeamCreation = config.DenyTeamCreation
|
||||
|
|
|
@ -27,7 +27,7 @@ func touchStartedFile() {
|
|||
}
|
||||
}
|
||||
|
||||
func reloadSettings(config settings.FICSettings) {
|
||||
func reloadSettings(config *settings.FICSettings) {
|
||||
// Copy the new settings file for distribution
|
||||
if data, err := ioutil.ReadFile(path.Join(settings.SettingsDir, settings.SettingsFile)); err != nil {
|
||||
log.Println("Unable to read settings file:", err)
|
||||
|
|
|
@ -92,24 +92,24 @@ func ExistsSettings(settingsPath string) bool {
|
|||
}
|
||||
|
||||
// ReadSettings parses the file at the given location.
|
||||
func ReadSettings(path string) (FICSettings, error) {
|
||||
func ReadSettings(path string) (*FICSettings, error) {
|
||||
var s FICSettings
|
||||
if fd, err := os.Open(path); err != nil {
|
||||
return s, err
|
||||
return nil, err
|
||||
} else {
|
||||
defer fd.Close()
|
||||
jdec := json.NewDecoder(fd)
|
||||
|
||||
if err := jdec.Decode(&s); err != nil {
|
||||
return s, err
|
||||
return &s, err
|
||||
}
|
||||
|
||||
return s, nil
|
||||
return &s, nil
|
||||
}
|
||||
}
|
||||
|
||||
// SaveSettings saves settings at the given location.
|
||||
func SaveSettings(path string, s FICSettings) error {
|
||||
func SaveSettings(path string, s *FICSettings) error {
|
||||
if fd, err := os.Create(path); err != nil {
|
||||
return err
|
||||
} else {
|
||||
|
@ -139,7 +139,7 @@ func ForceRegeneration() error {
|
|||
// Giving the location and a callback, this function will first call your reload function
|
||||
// before returning (if the file can be parsed); then it starts watching modifications made to
|
||||
// this file. Your callback is then run each time the file is modified.
|
||||
func LoadAndWatchSettings(settingsPath string, reload func(FICSettings)) {
|
||||
func LoadAndWatchSettings(settingsPath string, reload func(*FICSettings)) {
|
||||
// First load of configuration if it exists
|
||||
if _, err := os.Stat(settingsPath); !os.IsNotExist(err) {
|
||||
if config, err := ReadSettings(settingsPath); err != nil {
|
||||
|
@ -184,7 +184,7 @@ func LoadAndWatchSettings(settingsPath string, reload func(FICSettings)) {
|
|||
}
|
||||
}
|
||||
|
||||
func tryReload(settingsPath string, reload func(FICSettings)) {
|
||||
func tryReload(settingsPath string, reload func(*FICSettings)) {
|
||||
if config, err := ReadSettings(settingsPath); err != nil {
|
||||
log.Println("ERROR: Unable to read challenge settings:", err)
|
||||
} else if time.Until(config.ActivateTime) > 0 {
|
||||
|
|
Loading…
Reference in New Issue